记忆方法:SOLID+迪米特原则
面向对象的六大原则
- 单一职责原则(Single Responsibility Principle)——SRP
单一职责原则很好理解,就是一个类尽量只做一件事。
- 开闭原则(Open Close Principle)——OCP
开闭原则的定义是软件中的对象(类,模块,函数等)应该对于扩展是开放的,但是对于修改是关闭的。
即当需求发生改变的时候,我们需要对代码进行修改,这个时候我们应该尽量去扩展原来的代码,而不是去修改原来的代码,因为这样可能会引起更多的问题。
- 里式替换原则(Liskov Substitution Principle)——LSP
里式替换原则简单说来就是:所有引用基类的地方必须能够透明地使用其子类的对象。
里氏替换原则通俗的去讲就是:子类可以去扩展父类的功能,但是不能改变父类原有的功能
里氏替换和开闭原则是比较相近的,通过里式替换来达到对扩展开放,对修改关闭的效果
- 依赖倒置原则(Dependence Inversion Principle)——DIP
这个原则从名字根本看不出什么意思。简单的说就是尽量面向接口编程.
依赖倒置原则在java语言中的表现就是:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
- 接口隔离原则(InterfacesSergregation Principle)——ISP
接口隔离原则的定义是:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。接口最小化,过于臃肿的接口依据功能,可以将其拆分为多个接口。
以上这些设计思想用英文的第一个字母可以组成SOLID ,满足这个5个原则的程序也被称为满足了SOLID准则。
- 迪米特原则(Law of Demeter)——LOD
迪米特原则也被称为最小知识原则,他的定义:一个对象应该对其他对象保持最小的了解。
因为类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大,所以这也是我们提倡的软件编程的总的原则:低耦合,高内聚。