摘要: 部分边界:完整的架构边界代价高昂,它需要双向多态的边界接口、输入与输出数据结构,以及将两侧隔离为可独立编译和部署组件所需的依赖管理,这不仅实现成本高,维护成本也很大。在许多情况下,优秀的架构师会认为这种成本过高,但仍希望为未来可能需要的边界预留空间。这种前瞻性设计在敏捷社区中常被批评为违反 YAGN 阅读全文
posted @ 2026-03-20 15:56 cyusouyiku 阅读(10) 评论(0) 推荐(0)
摘要: 在第22章中我们介绍了呈现器(Presenter)的概念,呈现器是“简陋对象模式”(Humble Object Pattern)的一种实现形式,该模式有助于我们识别并保护架构边界,事实上上一章所讲的整洁架构中就大量运用了简陋对象模式的实现。简陋对象模式是一种设计模式,最初被提出是为了帮助单元测试人员 阅读全文
posted @ 2026-03-20 15:42 cyusouyiku 阅读(5) 评论(0) 推荐(0)
摘要: 近几十年出现了六边形架构(端口适配器)、DCI、BCE 等多种系统架构思想,虽细节有差异,但核心目标一致——关注点分离,均通过分层实现,至少包含业务规则层与用户/系统接口层,最终形成的系统具备共同特征:不依赖框架、可独立测试、UI 可替换、数据库可切换、与外部机构无关。 整洁架构以同心圆呈现层级,越 阅读全文
posted @ 2026-03-20 15:40 cyusouyiku 阅读(11) 评论(0) 推荐(0)
摘要: 想象下你现在在看一个建筑的蓝图,这个文件是设计师准备的,提供这个建筑的计划。这些计划告诉你什么? 如果你眼前的图纸是独栋住宅,你一眼就会看到正门、通向客厅的门厅,可能还有餐厅。不远处通常会有厨房,紧挨着餐厅;厨房旁或许还有小就餐区,再旁边多半是家庭活动室。看到这份图纸,你绝不会怀疑:这就是家。这份建 阅读全文
posted @ 2026-03-20 15:35 cyusouyiku 阅读(4) 评论(0) 推荐(0)
摘要: 若我们打算将应用拆分成业务规则与插件两部分,就必须先准确理解:业务规则究竟是什么? 事实证明,业务逻辑可分成好几种类型。严格来讲,业务规则是那些能为企业创造收益或者节省成本的规则或流程。更严苛地说,这类规则创造 / 节省收益的属性,与是否通过计算机实现无关 —— 即便纯靠人工执行,它们依然能产生同样 阅读全文
posted @ 2026-03-20 15:11 cyusouyiku 阅读(2) 评论(0) 推荐(0)
摘要: 本章核心观点是:软件系统本质是一系列处理策略的集合,架构的工作就是按 “变更原因与频率” 拆分和重组这些策略,通过控制源码依赖方向,让低层细节不影响高层核心,实现稳定、易维护的结构。 系统的输入转输出逻辑可以拆分为多条细粒度策略,比如业务计算、报表格式、数据校验等。优秀的架构会把因相同原因、同时变更 阅读全文
posted @ 2026-03-20 14:53 cyusouyiku 阅读(6) 评论(0) 推荐(0)
摘要: 系统的架构由一组软件组件,以及分隔这些组件的边界共同定义。这些边界有多种不同的形式。在本章中,我们将介绍其中最常见的几种。 Boundary Crossing 在运行时,一次边界跨越无非就是边界一侧的函数调用另一侧的函数,并传递一些数据,而打造合适的边界穿越关键在于管理源代码依赖。 为什么是源代码? 阅读全文
posted @ 2026-03-20 14:48 cyusouyiku 阅读(4) 评论(0) 推荐(0)
摘要: 软件架构本质上是一门划分界限的艺术,我将这些界限称为边界。 这些边界将软件元素彼此分开,并限制一侧的元素知晓另一侧的内容。其中有些边界在项目初期-甚至在编写任何代码之前-就已划定;另一些则要晚的多才会确定。 早期划定边界的目的,是尽可能推迟决策,并防止这些决策污染核心业务逻辑。 要记住架构师的目标是 阅读全文
posted @ 2026-03-20 14:14 cyusouyiku 阅读(7) 评论(0) 推荐(0)
摘要: 在我们先前的讲述中,一个好的架构必须支持: 1.系统的用例与运行方式 2.系统维护 3.系统开发 4.系统部署 使用案例: 第一点 ——用例—— 意味着系统架构必须支撑系统的核心设计意图。如果这是一个购物车应用,那么架构就必须支持购物车相关的用例。事实上,这是架构师首先要考虑的问题,也是架构设计的第 阅读全文
posted @ 2026-03-20 13:50 cyusouyiku 阅读(5) 评论(0) 推荐(0)
摘要: 架构这个词,总会让人联想到权威和神秘感,他让我们想到那些举足轻重的决策和深厚的技术功底,软件架构位于技术成就的顶峰。一提起软件架构师,我们就会想到大佬们 可究竟什么是软件架构?软件架构师是做什么的?又是什么时候开展工作? 首先软件架构师本身就是程序员,并且始终都是程序员,千万别相信那种鬼话:说架构师 阅读全文
posted @ 2026-03-20 11:25 cyusouyiku 阅读(3) 评论(0) 推荐(0)
摘要: 本章聚焦组件间关系设计,核心围绕可开发性与逻辑设计的权衡,受技术、管理、需求变动等多重因素影响,提出三大组件耦合原则,同时配套量化度量指标指导架构优化:首先是无环依赖原则(ADP),要求组件依赖图必须为有向无环图(DAG),杜绝依赖循环,解决多人协作的“次日清晨综合征”,避免集成混乱、测试困难、构建 阅读全文
posted @ 2026-03-20 10:46 cyusouyiku 阅读(6) 评论(0) 推荐(0)
摘要: 哪些类应归属于哪些组件?这是一项关键决策,需要优良的软件工程原则作为指导。遗憾的是,多年来,这一决策的制定方式一直较为随意,几乎完全依赖具体场景来定。 在本章中,我们将探讨组件内聚的三大原则:REP:复用 / 发布等价原则(The Reuse/Release Equivalence Principl 阅读全文
posted @ 2026-03-20 10:01 cyusouyiku 阅读(7) 评论(0) 推荐(0)