设计原则总结
“单一职责原则”、“接口隔离原则”、“迪米特法则”的区别
从目的上来说,它们都是为了实现高内聚、低耦合,只是不同角度而已:
单一职责
- 角度:自身
- 方式:相关功能应该聚合在一起
- 侧重点:高内聚
接口隔离
- 角度:调用者
- 方式:不需要的功能不应该依赖
- 侧重点:低耦合
迪米特法则
- 角度:关系
- 方式:依赖关系尽可能地少
- 侧重点:低耦合
大部分设计模式的目的都差不多,很多只是思考的角度不同而已。
从目的上来说,它们都是为了实现高内聚、低耦合,只是不同角度而已:
单一职责
接口隔离
迪米特法则
大部分设计模式的目的都差不多,很多只是思考的角度不同而已。
迪米特法则(Law of Demeter
,LOD
),或者 The Least Knowledge Principle
。
英文描述:
1 | Each unit should have only limited knowledge about other units: only units “closely” related to the current unit. |
中文翻译:
1 | 每个模块(unit)只应该了解那些与它关系密切的模块的有限知识(knowledge)。 |
依赖反转原则(Dependency Inversion Principle
,DIP
),也称为依赖倒置原则。
英文描述:
1 | High-level modules shouldn’t depend on low-level modules. Both modules should depend on abstractions. |
中文翻译:
1 | 高层模块(high-level modules)不要依赖低层模块(low-level)。高层模块和低层模块应该通过抽象(abstractions)来互相依赖。 |
里式替换原则(Liskov Substitution Principle
,LSP
)。
英文描述:
1 | Functions that use pointers of references to base classes must be able to use objects of derived classes without knowing it |
中文翻译:
1 | 子类对象(`object of subtype`/`derived class`)能够替换程序中父类对象(`object of base`/`parent class`)出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。 |