目的

为了让软件具有更好的重用性可读性可扩展性可靠性(更改功能后,对原有功能几乎没印象)、低耦合,高内聚(模块间关联性低,内部关联性强)

需要遵守的七大原则

单一职责原则

一个类只负责一项职责,或者在方法上遵守上述原则

接口隔离原则

客户端不应该以来它不需要的接口,即一个类对另一个类的以来应该建立在最小的接口上

依赖倒转原则

  1. 高层模块不应该依赖底层模块,二者都应该依赖其抽象
  2. 抽象不应该以来细节,细节应该以来抽象
  3. 中心思想是面向接口编程
  4. 相对于细节的多变性,抽象的东西要稳定得多
  5. java中抽象值得是接口或者抽象类,细节就是值具体的实现类
  6. 是有接口或者抽象类的目的是制定好规范,在于设计

里氏替换原则

  1. 集成包含的一个含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约(虽然子类不一定遵守)
  2. 一个类被其他类所继承,如果该类的方法需要改变,必须考虑到其他所有子类是否会受到影响。

要求:
尽量不要重写父类的方法

开闭原则

  1. 模块和函数应该对扩展开放(对提供方而言),对修改关闭(对使用放而言)。
  2. 软件需要变化时,尽量通过扩展软件实体来实现,而不是通过修改已有的代码来实现的。
  3. 其他原则的目的就是遵循开闭原则

迪米特法则

  1. 一个对象应该对其他对象保持最少的了解
  2. 类之间的关系越密切,耦合度越大
  3. 对于被依赖的类不管多么复杂,都应该尽量将逻辑封装在类的内部。对外除了提供public方法外不泄露任何信息。
  4. 陌生的类最好不要以局部变量的形式出现在方法中

合成复用原则

尽量使用依赖/合成/聚合的方式,而不是使用继承