1.单一职责原则
即一个类只负责一项职责,不要存在多于一个导致类变更的原因
2.里氏替换原则
子类可以扩展父类的功能,但是不能改变父类原有的功能 :
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
子类可以增加自己持有的方法
当子类重载父类的方法时,方法的形参要比父类方法的输入参数更宽松
当子类方法实现父类的抽象方法时,方法的返回值要比父类更严格
父类 变量名=NEW 子类();
3.依赖倒置原则
高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
面向接口编程:
先把客户的业务逻辑线提取出来,作为接口,业务具体实现通过该接口的实现类来完成。 当客户需求变化时,只需编写该业务逻辑的新的实现类,通过更改配置文件(例如Spring框架)中该接口 的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。
4.接口隔离原则
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
建立单一接口,尽量细化接口,接口中的方法尽量少,要为各个类建立专用的接口,不要建立庞大的接口供所有依赖它的类去调用。
提高内聚,减少对外交互,用最少的方法去完成最多的事情。
5.迪米特法则(最少知道原则)
一个对象应该对其他对象保持最少的了解。类与类的关系越密切,耦合越大,当一个类发生变化的时候对另一个类的影响也越大,尽量降低类与类之间的耦合。原则:低耦合,高内聚。
在采用最少知道原则时要反复权衡,做到结构清晰又高内聚低耦合。
6.开闭原则
一个软件实体如类,模块和函数应该对扩展开发,对修改关闭。软件变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。软件实体尽量在不修改原有代码的情况下扩展,尽量不改,只增加。
只要我们前面的五种原则遵守好了,自然是符合开闭原则
总结:
单一原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;
依赖倒置告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;
迪米特法则告诉我们要降低耦合;开闭原则是总纲,他告诉我们要对扩展开发,对修改关闭。