1.单一职责原则
简单总结:就一个类而言,应该只有一个引起它变化的原因,一个类中承担的职责不宜多
如果 承担的职责越多,可复用性越差
承担的职责越多,各职责间耦合性越强,修改一个职责,都有影响到其它职的风险
是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则
2.开闭原则
简单总结:一个软件实体应该对扩展开放,对修改关闭。在不修改原有代码的情况下进行扩展
把系统定义成一个相对稳定的抽象层,将不同行为移至具体的实现层中完成。
使软件具有较好的稳定性和可延续性。
抽象化是开闭原则的关键
3.里氏替换原则
简单总结:所有引用基类的地方必须能透明地使用其子类的对象
在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立
在程序中经量使用基类对对象进行定义,而在运行时再确定其子类型,用子类对象来替换父类对象
里氏代换原则是开闭原则的具体实现手段之一
4.依赖倒置原则
简单总结:抽象不应该依赖于细节,细节应当依赖于抽象。要对接口编程,而不是针对实现编程。
使用接口和抽象类进行变量类型声明,参数类型声明,方法返回类型声明,以及数据类型的转换。而不用具体类来做这些事情。
针对抽象层编程,将具体类对象通过依赖注入的方式注入其它对象中(构造注入,设置注入(set方法),接口注入)
开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段
5.接口隔离原则
简单总结:使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖于它不需要的接口
每个接口是一个独立的较少,不干不该干的事,该干的都得干
给客户端提供尽可能小的 接口,而不要提供大的总接口,仅仅提供客户需要的行为
需要注意控制接口的粒度,接口不能太小,如果太小会导致系统中接口泛滥,不利于维护;接口也不能太大,太大的接口将违背接口隔离原则,灵活性较差,使用起来很不方便
6.合成复用原则
简单总结:尽量使用对象组合,而不是继承来达到复用的目的
7.迪米特法则
简单总结:一个对象应当对其他对象有尽可能少的了解
一个类应该对自己需要耦合或调用的类知道得最少,不关心被耦合或调用的类的内部实现,只负责调用你提供的方法
不要和“陌生人”说话、只与你的直接朋友通信----朋友指
(1) 当前对象本身(this);
(2) 以参数形式传入到当前对象方法中的对象;
(3) 当前对象的成员对象;
(4) 如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友;
(5) 当前对象所创建的对象
在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限
在类的设计上,只要有可能,一个类型应当设计成不变类;
在对其他类的引用上,一个对象对其他对象的引用应当降到最低