<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Architecture on Website of SauceWu</title><link>https://saucewu.github.io/tags/architecture/</link><description>Recent content in Architecture on Website of SauceWu</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Thu, 20 Mar 2025 12:30:00 +0900</lastBuildDate><atom:link href="https://saucewu.github.io/tags/architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>Flutter K线系统拆解（一）：架构分层与领域模型</title><link>https://saucewu.github.io/posts/flutter-k%E7%BA%BF%E7%B3%BB%E7%BB%9F%E6%8B%86%E8%A7%A3%E4%B8%80%E6%9E%B6%E6%9E%84%E5%88%86%E5%B1%82%E4%B8%8E%E9%A2%86%E5%9F%9F%E6%A8%A1%E5%9E%8B/</link><pubDate>Thu, 20 Mar 2025 12:30:00 +0900</pubDate><guid>https://saucewu.github.io/posts/flutter-k%E7%BA%BF%E7%B3%BB%E7%BB%9F%E6%8B%86%E8%A7%A3%E4%B8%80%E6%9E%B6%E6%9E%84%E5%88%86%E5%B1%82%E4%B8%8E%E9%A2%86%E5%9F%9F%E6%A8%A1%E5%9E%8B/</guid><description>&lt;h1 id="flutter-k线系统拆解一架构分层与领域模型"&gt;Flutter K线系统拆解（一）：架构分层与领域模型&lt;/h1&gt;
&lt;p&gt;K 线在 demo 阶段通常不难，难的是进入真实交易场景之后的长期维护。&lt;br&gt;
一旦业务进入高频迭代，常见问题很快会暴露出来：主题体系耦合、模式分支散落、改动范围不可控、扩展成本越来越高。&lt;/p&gt;
&lt;p&gt;这一篇只讲架构层面的核心问题：&lt;br&gt;
如何把 K 线从“能画出来的组件”做成“可长期演进的系统”。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一推荐的系统分层"&gt;一、推荐的系统分层&lt;/h2&gt;
&lt;p&gt;一套可维护的 K 线实现，通常至少要有这几层：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;入口与装配层：图表 widget 生命周期与运行时状态
SDK 抽象层：主题、国际化、事件、屏幕适配等外部能力
数据与指标层：行情实体、指标结果、计算引擎
渲染核心层：坐标、可视区、渲染器管理
渲染阶段层：背景/网格/主图/十字线/叠加层等阶段化执行
策略扩展层：现货、合约等模式差异封装
工具叠加层：订单标记、绘图工具、信息浮层
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;分层的价值不在“看起来规范”，而在于改动隔离：&lt;br&gt;
新增一个能力时，只需要改对应层，不会把整个系统拖下水。&lt;/p&gt;</description></item><item><title>Clean Architecture 是什么：一篇讲清分层与依赖</title><link>https://saucewu.github.io/posts/clean-architecture-%E6%98%AF%E4%BB%80%E4%B9%88%E4%B8%80%E7%AF%87%E8%AE%B2%E6%B8%85%E5%88%86%E5%B1%82%E4%B8%8E%E4%BE%9D%E8%B5%96/</link><pubDate>Sat, 04 Sep 2021 21:20:00 +0900</pubDate><guid>https://saucewu.github.io/posts/clean-architecture-%E6%98%AF%E4%BB%80%E4%B9%88%E4%B8%80%E7%AF%87%E8%AE%B2%E6%B8%85%E5%88%86%E5%B1%82%E4%B8%8E%E4%BE%9D%E8%B5%96/</guid><description>&lt;h1 id="clean-architecture-是什么一篇讲清分层与依赖"&gt;Clean Architecture 是什么：一篇讲清分层与依赖&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;Clean Architecture&lt;/code&gt; 常被说成“分层架构”，但它最关键的不是分层本身，而是：&lt;br&gt;
&lt;strong&gt;依赖方向必须可控。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一clean-想解决什么问题"&gt;一、Clean 想解决什么问题&lt;/h2&gt;
&lt;p&gt;项目变大后，最容易失控的是依赖关系：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;页面直接调 API&lt;/li&gt;
&lt;li&gt;业务规则写在网络回调里&lt;/li&gt;
&lt;li&gt;换个数据库或 SDK，核心逻辑跟着重写&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Clean 的核心目标是：&lt;br&gt;
&lt;strong&gt;让核心业务不依赖外部框架和实现细节。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二经典四层怎么理解"&gt;二、经典四层怎么理解&lt;/h2&gt;
&lt;h3 id="1-presentation表现层"&gt;1) Presentation（表现层）&lt;/h3&gt;
&lt;p&gt;页面、组件、状态管理。&lt;br&gt;
负责“怎么展示”和“怎么交互”。&lt;/p&gt;
&lt;h3 id="2-application应用层"&gt;2) Application（应用层）&lt;/h3&gt;
&lt;p&gt;UseCase（用例）编排流程。&lt;br&gt;
负责“做什么流程”，不负责“怎么请求网络”。&lt;/p&gt;</description></item><item><title>DDD 是什么：一篇讲清领域驱动设计</title><link>https://saucewu.github.io/posts/ddd-%E6%98%AF%E4%BB%80%E4%B9%88%E4%B8%80%E7%AF%87%E8%AE%B2%E6%B8%85%E9%A2%86%E5%9F%9F%E9%A9%B1%E5%8A%A8%E8%AE%BE%E8%AE%A1/</link><pubDate>Wed, 11 Aug 2021 21:10:00 +0900</pubDate><guid>https://saucewu.github.io/posts/ddd-%E6%98%AF%E4%BB%80%E4%B9%88%E4%B8%80%E7%AF%87%E8%AE%B2%E6%B8%85%E9%A2%86%E5%9F%9F%E9%A9%B1%E5%8A%A8%E8%AE%BE%E8%AE%A1/</guid><description>&lt;h1 id="ddd-是什么一篇讲清领域驱动设计"&gt;DDD 是什么：一篇讲清领域驱动设计&lt;/h1&gt;
&lt;p&gt;很多人第一次听到 &lt;code&gt;DDD&lt;/code&gt;（Domain-Driven Design，领域驱动设计）会觉得它很“玄学”。&lt;br&gt;
其实它解决的问题非常现实：&lt;strong&gt;业务太复杂，代码开始失真，团队开始说不清同一个概念。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一ddd-到底在解决什么问题"&gt;一、DDD 到底在解决什么问题&lt;/h2&gt;
&lt;p&gt;当系统进入复杂业务阶段（交易、支付、风控、订单流转），常见问题会出现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一个规则在多个地方重复实现&lt;/li&gt;
&lt;li&gt;接口字段就是业务模型，改字段就改全系统&lt;/li&gt;
&lt;li&gt;“下单”“成交”“结算”这些词，每个人理解都不一样&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DDD 的核心目标是：&lt;br&gt;
&lt;strong&gt;让代码结构贴近业务结构，让业务语言和代码语言一致。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二ddd-的核心概念只记最关键的"&gt;二、DDD 的核心概念（只记最关键的）&lt;/h2&gt;
&lt;h3 id="1-领域domain"&gt;1) 领域（Domain）&lt;/h3&gt;
&lt;p&gt;你的业务问题空间，比如“交易系统”就是一个领域。&lt;/p&gt;
&lt;h3 id="2-统一语言ubiquitous-language"&gt;2) 统一语言（Ubiquitous Language）&lt;/h3&gt;
&lt;p&gt;产品、业务、研发使用同一套术语。&lt;br&gt;
比如 &lt;code&gt;Order&lt;/code&gt;、&lt;code&gt;Fill&lt;/code&gt;、&lt;code&gt;Position&lt;/code&gt; 必须定义一致，避免口头理解和代码实现偏差。&lt;/p&gt;</description></item></channel></rss>