目的
为了让软件具有更好的重用性
、可读性
、可扩展性
、可靠性
(更改功能后,对原有功能几乎没印象)、低耦合,高内聚
(模块间关联性低,内部关联性强)
需要遵守的七大原则
单一职责原则
一个类只负责一项职责,或者在方法上遵守上述原则
接口隔离原则
客户端不应该以来它不需要的接口,即一个类对另一个类的以来应该建立在最小的接口上
依赖倒转原则
- 高层模块不应该依赖底层模块,二者都应该依赖其抽象
- 抽象不应该以来细节,细节应该以来抽象
- 中心思想是面向接口编程
- 相对于细节的多变性,抽象的东西要稳定得多
- java中抽象值得是接口或者抽象类,细节就是值具体的实现类
- 是有接口或者抽象类的目的是
制定好规范
,在于设计
里氏替换原则
- 集成包含的一个含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约(虽然子类不一定遵守)
- 一个类被其他类所继承,如果该类的方法需要改变,必须考虑到其他所有子类是否会受到影响。
要求:
尽量不要重写父类的方法
开闭原则
- 模块和函数应该对扩展开放(对提供方而言),对修改关闭(对使用放而言)。
- 软件需要变化时,尽量通过扩展软件实体来实现,而不是通过修改已有的代码来实现的。
- 其他原则的目的就是遵循开闭原则
迪米特法则
- 一个对象应该对其他对象保持最少的了解
- 类之间的关系越密切,耦合度越大
- 对于被依赖的类不管多么复杂,都应该尽量将逻辑封装在类的内部。对外除了提供public方法外不泄露任何信息。
- 陌生的类最好不要以局部变量的形式出现在方法中
合成复用原则
尽量使用依赖/合成/聚合的方式,而不是使用继承