1.开闭原则
一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。
简单说就是想增强一个类,应该选择扩展它,而不是修改它。
优点:增加程序的扩展性,也方便维护。增强一个功能,不需要修改原有代码,只需要增加一个子类即可。
2.单一职责原则
一个类应该只负责一项功能,即只有一个原因会导致此类被修改。
防止类变得臃肿,被频繁修改,易于维护。
优点:类功能清楚明了,可以降低耦合,方便维护。
3.依赖倒置原则
面向接口编程,抽象就是接口或者抽象类,细节就是实现类
含义:
上层模块不应该依赖下层模块,两个都应该依赖抽象;
抽象不应该依赖细节,细节应该依赖抽象。
所有的依赖都应该依赖抽象(接口)。
优点:扩展性更强,当有新功能需要实现时只需要增加(替换)一个新的实现类即可,无需修改原来的类。
4.里氏替换原则
子类可以扩展父类的原有的功能,但不能修改父类的功能。
所有在引用父类的地方都可以替换为子类,并且能正常运行。
5.接口隔离原则
建立单一接口,多个特定的接口要优于一个通用的总接口。
每个接口功能应该尽量单一,每个实现类都不应该实现不需要的功能(尽量少的实现),这样能降低耦合,提高复用。
优点:避免同一个接口里面包含不同类职责的方法,接口责任划分更加明确,符合高内聚低耦合的思想。
6.迪米特法则(Law Of Demeter)
一个对象应该尽可能少的与其他对象有接触,只依赖那些真正需要接触的对象。
迪米特法则也叫最少知道法则,一个对象应该只和自己的成员变量,方法的输入和输出参数有接触,而不应该引入其他对象(间接接触)。
优点:能有效降低类之间的耦合,让类之间的关系更加简洁、明了。