Skip to content

Latest commit

 

History

History
29 lines (15 loc) · 2.04 KB

principle-of-object-oriented-design.md

File metadata and controls

29 lines (15 loc) · 2.04 KB

Single Responsibility Principle (SRP)

最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则要求一个类只负责一个功能领域中的相应职责,就一个类而言,应该只有一个引起它变化的原因。一个模块、类或者方法承担的职责越多,它被复用的可能性就越小。一个类承担的职责过多的话,就相当于将这些职责耦合在一起,当其中一个职责变化的时候,可能会影响其他职责的运作。

单一职责是实现高内聚、低耦合的指导方针。

Open-Closed Principle (OCP)

开闭原则要求一个软件实体(软件模块、一个类、由多个类组成的局部结构)应该 对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。在软件开发中,都会面临需求随时间的推移而发生变化的问题。当软件面临新的需求的时候,我们应该保证系统设计框架是稳定的。

为了满足开闭原则,我们需要对系统进行抽象化设计,抽象化是开闭原则的关键

Liskov Substitution Principle (LSP)

如果对每一个类型为 S 的对象 o1,都有类型为 T 的对象 o2,使得以 T 定义的所有程序 P 在所有的对象以 o1 替换 o2 时,程序的行为没有任何变化,那么类型 S 是类型 T 的子类型。即所有引用基类(父类)的地方必须能透明地使用其子类的对象。

里氏替换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。

里氏替换原则是实现开闭原则的重要方式之一。

Dependence Inversion Principle (DIP)

抽象不应该依赖于细节,细节应该依赖于抽象。要面向接口编程,而不是针对实现编程.

Interface Segregation Principle (ISP)

Composite Reuse Principle (CRP)

Law of Demeter (LoD)