SRP(Single Responsibility Principle),单一职责原则
类的职责是站在其它类的角度来定义的,类的职责包含多个相关功能,该原则适合基础类,不适合基于基础类构建复杂的聚合类。
OCP(Open-Close Principle),开闭原则
对扩展开放,对修改封闭,不修改代码就可以增加新功能,提供者增加新的功能,但使用者不需要修改代码。
LSP(Liskov Substitution Principle),里氏替换原则
子类必须实现或继承父类所有的公有方法,子类每个方法的输入参数必须与父类一致,子类每个方法的输出必须不比父类少。
ISP(Interface Segregation Principle),接口隔离原则
ISP承认对象需要非内聚接口,然而ISP建议客户端不需要知道整个类,只需要知道有内聚接口的抽象父类即可。
打印一体机包括打印、复印、扫描、传真四个接口。某员工只用传真功能,那么只应该给他传真功能的接口,而不是整个打印一体机。
DIP(Dependency Inversion Principle),依赖反转原则
高层模块不应该直接依赖低层模块,两者都应该依赖抽象层。
抽象不能依赖细节,细节必须依赖抽象。
高层模块依赖低层模块指高层模块需要调用低层模块的方法。
高层模块依赖抽象层,指高层模块基于抽象层编程。
低层模块依赖抽象层,指低层模块继承或实现抽象层。
DIP的启发:
- 任何变量都不应该持有一个指向具体类的指针或应用。
- 任何类都不应该从具体类派生。
- 任何方法都不应该覆写它的任何基类中已经实现了的方法。
用处
- SRP用于类的设计。
- OCP是总的指导思想。
- LSP用于指导类的继承设计。
- ISP用于指导接口的设计。
- DIP用于指导如何抽象。
发表回复