内聚
定义:一个模块内部元素彼此结合的紧密程度。
分类:
- 偶然内聚 (Coincidental cohesion)
- 逻辑内聚 (Logical cohesion)
- 时间内聚 (Temporal cohesion)
- 过程内聚 (Procedural cohesion)
- 信息内聚 (Informational cohesion)
- 顺序内聚 (Sequential cohesion)
- 功能内聚 (Functional cohesion) :元素都是为了完成同一个单一任务。内聚性最好的一种方式。
耦合
定义:模块之间相互依赖的程度
分类:
- 无耦合
- 消息耦合:比较理想的耦合
- 数据耦合
- 数据结构耦合
- 控制耦合:如工厂类
- 外部耦合:两个模块对其他模块没有直接感知,两个模块之间也没有直接的交互,而是通过约定俗成的“协议”、“格式”、“接口”等完成分工合作
- 全局耦合
- 内容耦合:一个模块依赖另一个模块的内部内容(主要是数据成员)时,称为内容耦合。是最差的一种耦合。
高内聚低耦合
为什么要高内聚低耦合:降低复杂性
高内聚低耦合是否意味着内聚越高越好,耦合越低越好:并不是,因为高内聚和低耦合是相互冲突的。
类设计原则(SOLID)
- SRP-单一职责原则 (Single Responsibility Principle)
- OCP-开闭原则 (Open-Closed Principle)
- LSP-里氏替换原则 (Liskov Substitution Principle)
- ISP-接口隔离原则 (Interface Segregation Principle)
- DIP-依赖反转原则 (Dependency Inversion Principle)