
- 🍗读 | Software Architecture:The Hard Parts 之耦合
- 读 | Software Architecture:The Hard Parts 之代码复用
- 读 | Software Architecture:The Hard Parts 之数据所有权
- 读 | Software Architecture:The Hard Parts 之数据访问
- 读 | Software Architecture:The Hard Parts 之事务
- 读 | Software Architecture:The Hard Parts 之约定
耦合,指一程序中,模块及模块之间信息或参数依赖的程度。两个部分耦合,其表现就是其中一部分的变化可能引发另一部分(为了维持适当的功能)也跟着变化。
(摘自 wiki)在面向过程编程中,存在以下几种耦合类型
- Content coupling,内容耦合,一个模块直接使用另一个模块内部的代码,违背了信息隐藏的软件设计原则。
- Common coupling,共享耦合,多个模块都会访问同一个全局数据。
- External coupling,外部耦合,多个模块共享同一个外部数据格式、通信协议、设备接口。
- Control coupling,控制耦合,一个模块控制另一个模块的执行流程。
- Stamp coupling (data-structured coupling),特征耦合/标记耦合,也称数据结构耦合,多个模块公用一个组合数据结构,但每个模块只用了其中一部分。
- Data coupling,数据耦合,多个模块通过参数共享数据。

在面向对象编程中,耦合类型有
- Subclass coupling,子类耦合,子类能链接到父类,父类不能链接到子类。
- Temporal coupling,时空耦合,仅仅因为同时发生,两个动作就被放到一个模块中。
- Dynamic coupling,动态耦合,各部分在运行时才发生的联系,如同步/异步通信、动态绑定。
- Static coupling,静态耦合,通过约定来处理的静态依赖,如操作系统、框架、传递依赖管理的库。
- Semantic coupling,语义耦合,各部分使用的概念相似性。
- Logical coupling,逻辑耦合/演化耦合/变化耦合,两个部分的变化总是同时发生或前后相继。
在微服务架构的语境中,静态耦合用于分析操作依赖,动态耦合用于分析通信依赖。
如何划分模块、服务,以何种方式通信、以何种方式交换信息都属于处理静态依赖的约定。
动态依赖则主要受三个维度影响:Communication、Consistency、Coordination。
未完待续…
0 条评论