一、开闭原则 Open-Closed Principle,OCP
对扩展开放,对修改关闭(通过扩展实现变化,而不是修改)
一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。
二、单一职责原则 Simple Responsibility Principle,SRP
There should never be more than one reason for a class to change.
类的功能要单一,不能包罗万象,跟杂货铺似的。
三、里氏替换原则 Liskov Substitution Principle,LSP
1.子类必须完全实现父类的方法
2.子类可以有自己的个性
3.覆盖或实现父类的方法时输入参数可以为父类(重载)
4.覆盖或实现父类的方法时,返回值可以为子类
四、依赖倒置原则 Dependence Inversion Principle, DIP
1.高层次模块不应依赖低层次模块,两者都应该依赖其抽象
2.抽象不应该依赖细节
3.细节应该依赖抽象
五、接口隔离原则 Interface segregation Principle ,ISP
1.接口要尽量小
2.接口要高内聚
3.定制服务
4.接口设计是有限度的
六、迪米特法则(Law of Demeter,LOD) 或 最小知识原则 (Least Knowledge Principle,LKP)
七、合成/聚合复用原则(Composite/Aggregate Reuse Principle ,CARP)
合成 强拥有 人与手的关系
聚合 弱拥有 人群与人的关系