单一职责原则(Single Responsibility Principle)

1.定义
    There should never be more than one reason for a class to change.
    每个类都应该实现单一的职责,即有且只有一个原因引起类的变更。
2.优点
    类的复杂性降低,可读性提高,维护性提高。变更引起的风险降低。

里氏替换原则(Liskov Substitution Principle)

1.定义1
    If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T. 
    如果对每一个类型为S的对象o1,都有一个类型为T的对象o2,使得以T定义的所有程序P,在所有的对象o1都转换为o2时,程序P的行为没有发生变化,那么类型S就是类型T的子类型。
2.定义2
    functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it. 
    所有引用基类的地方必须能透明的使用其子类的对象。
3.优点
    加强程序的健壮性,升级时的兼容性。

依赖倒转原则(Dependence Inversion Principle)

1.定义
    High level modules should not depend upon low level modules,Both should depend upon abstractions.Abstractions should not depend upon details.Details should depend upon abstracts.
    高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。

接口隔离原则(Interface Segregation Principle)

1.定义1
    Clients should not be forced to depend upon interfaces that they don't use. 
    客户端不应该依赖它不需用的接口。
2.定义2
    The dependency of one class to another one should depend on the smallest possible interface.
    类间的依赖关系应该建立在最小的接口上。

迪米特法则(Low Of Demeter)

1.定义1
    Least Knowledge Principle.
    一个对象应该对其他对象有最少的了解。
2.定义2
    Only talk to your immedate friends.
    只和直接的朋友通信。

合成复用原则(Composite Reuse Principle)

1.定义
    Composite/Aggregate Reuse Principle (CARP).
    尽量首先使用合成/聚合的方式,而不是使用继承。

开闭原则

1.定义
     Software entities like classes, modules and functions should be open for extension but closed for modifications. 
     软件实体应该对扩展开放,对修改关闭。
2.优点
   提高复用性,提高可维护性。 

JadeQYuan
279 声望311 粉丝

知其然,知其所以然。。。