知识卡片
多端口拆分的五个理由
内容
一个组件理论上可以只用一个端口暴露所有操作,但拆成多个端口通常更好,理由有五个:职责——单一端口随组件变大会越来越臃肿,拆开更易理解;协议——单一端口若混合多个状态机会迅速陷入混乱;耦合——每个用户只看到自己需要的那部分操作,某一类客户端的接口变化不会波及另一类;可用性——更小更简单的端口更容易理解;兼容性——不同端口可以对同一计算提供不同格式(如JSON和XML)或不同版本,以兼容各类客户端。拆分端口还有个额外好处:可读的端口类型名本身就在向读代码的人传递设计意图,端口越多,传递知识的机会也越多。
结构图:
flowchart TD
A[为何拆分多端口] --> B[职责:单端口随组件变大会臃肿]
A --> C[协议:单端口混合多状态机易混乱]
A --> D[耦合:每类用户只看到所需操作]
A --> E[可用性:更小端口更易理解]
A --> F[兼容性:同一计算提供不同格式/版本]
参考来源
- 位置:《恰如其分的软件架构》第12章《模型元素》12.9节《端口》(源文件:_epub-src/OEBPS/text00122.html)
- 结论依据:原文列出多端口相比单一端口的五个优势:职责、协议、耦合、可用性、兼容性,并说明可读的端口类型名本身能传递架构设计意图。
- 原始内容:职责……协议……耦合……可用性……兼容性……当一个开发人员看图或代码时,看到可读的端口类型名称,会得到一些被传递出来的、关于系统的知识……拥有多个端口,意味着拥有更多传递知识和设计意图的机会。