面向对象设计原则

一、单一职责原则。(SRP:Single responsibility principle)

核心思想:解耦和增强内聚性(高内聚,低耦合)。

二、开闭原则。(OCP:Open Closed Principle)

核心思想:对扩展开放,对修改关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。

三、里氏替换原则。(LSP:Liskov Substitution Principle)

核心思想:
1.在任何父类出现的地方都可以用他的子类来替代(子类应当可以替换父类并出现在父类能够出现的任何地方)子类必须完全实现父类的方法。在类中调用其他类是务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。
2.子类可以有自己的个性。子类当然可以有自己的行为和外观了,也就是方法和属性
3.覆盖或实现父类的方法时输入参数可以被放大。即子类可以重载父类的方法,但输入参数应比父类方法中的大,这样在子类代替父类的时候,调用的仍然是父类的方法。即以子类中方法的前置条件必须与超类中被覆盖的方法的前置条件相同或者更宽松。
4.覆盖或实现父类的方法时输出结果可以被缩小。

四、依赖倒置原则。(DIP:Dependence Inversion Principle)

核心思想:要依赖于抽象,不要依赖于具体的实现。

五、接口隔离原则。(ISP:Interface Segregation Principle)

核心思想:一个接口不需要提供太多的行为,一个接口应该只提供一种对外的功能,不应该把所有的操作都封装到一个接口当中。

六、合成复用原则。(CRP:Composite Reuse Principle)

核心思想:尽量使用对象组合,而不是继承来达到复用的目的。该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。

七、迪米特法则。(LOD:Law of Demeter)

又叫最少知识法则。

核心思想:一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。(类间解耦,低耦合)意思就是降低各个对象之间的耦合,提高系统的可维护性;在模块之间只通过接口来通信,而不理会模块的内部工作原理,可以使各个模块的耦合成都降到最低,促进软件的复用。

参考资料:
1、面向对象的七种设计原则

cocowool

A FULL STACK DREAMER!