六大原则
1.单一职责原则
定义:一个类只负责一个职责。
在写代码逻辑时,要将不同的逻辑从类中抽离出来,组成单一逻辑的类,这样的类符合单一职责原则,
将这些类的引用放到之前代码中,就是高内聚,低耦合,所有的逻辑类都聚集在调用类中,但是每个类之间没有关联。
2.接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
接口1中有5个方法,类A实际实现了三个,类C也实际实现了三个,有两个方法是不需要实现的,这样就违反了接口隔离原则,对接口进行改造:
类A实现接口I1、I2,类C实现了接口I1、I3,在实现类中不存在空实现的方法。
3.依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。中心思想,面向接口变成。
依赖的三种方式:
1、接口,2、构造器,3、set方法
实现接口中open方法就是指的细节,接口ITV就是指的抽象,细节依赖抽象,能够使扩展更灵活,如果细节依赖细节,如果后期有扩展就只能重新写方法,依赖细节就等于提前写了一个缓冲区,有利于后续扩展
4.里式替换原则
定义:所有引用基类(父类)的地方必须能透明地使用其子类的对象。
子类中尽量不要重写父类的方法。
问题由来:有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成,则子类B在完成新功能P2的同时,有可能会导致原有功能P1发生故障。
解决方案:当使用继承时,遵循里氏替换原则。类B继承类A时,除添加新的方法完成新增功能P2外,尽量不要重写父类A的方法,也尽量不要重载父类A的方法。【由时候我们可以采用final的手段强制来遵循】
继承包含这样一层含义:父类中凡是已经实现好的方法(相对于抽象方法而言),实际上是在设定一系列的规范和契约,虽然它不强制要求所有的子类必须遵从这些契约,但是如果子类对这些非抽象方法任意修改,就会对整个继承体系造成破坏。而里氏替换原则就是表达了这一层含义。
5.迪米特法则(最少知道原则)
定义:一个对象应该对其他对象保持最少的了解。
通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。
6.开闭原则
定义:对扩展开放,对修改关闭。
在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
总结
每个原则记录的都不是很细致,都是记录的我感觉能够理解原则的总结