[TOC]
设计原则
一、单一职责原则
有且仅有一个原因引起类的变更。
优点:
- 类的复杂性降低,实现什么职责都有明确的定义;
- 可读性提高;
- 可维护性提高;
- 变更引起的风险降低。
二、里氏替换原则
所有引用基类的地方必须能透明使用其子类的对象。只要父类能出现的地方,子类就可以出现,而且替换子类也不会产生错误。
继承的优点:
- 代码共享,每个子类都有父类的方法和属性;
- 提高代码重用性;
- 提高代码扩展性;
- 提高产品或项目开放性。
继承的缺点:
- 具有侵入性,子类有父类的所有属性和方法;
- 降低代码灵活性;
- 增强耦合性,父类中常量、变量和方法被修改时,需要考虑子类的修改。
三、依赖倒置原则
高层模块不应该依赖底层模块,两者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。
模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系通过接口或抽象类产生的。接口或抽象类不依赖于实现类,实现类依赖接口或抽象类。
四、接口隔离原则
客户端不应依赖它不需要的接口,对接口进行细化;类建的依赖关系应该建立在最小的接口上。建立单一接口,不要建立臃肿庞大的接口。而且要满足单一职责原则。
五、迪米特法则
也称最少知识原则:一个对象应该对其他对象有最少的了解。一个类应该对自己需要耦合或调用的类知道的最少。
只和直接的朋友通信:每个对象都必然与其他对象有耦合关系,两个对象间的耦合就成为朋友关系。
迪米特法则的核心观念就是类间的解耦,弱耦合。其实就是面向对象编程。
六、开闭原则
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。开闭原则可以提高复用性,提高维护性。
抽象约束:通过接口或者抽象类可以约束一组可能变化的行为,并且能够实现对扩展开放。
1.通过接口或者抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或者抽象类中不存在的public方法。
2.参数类型、引用对象尽量使用接口或者抽象类,而不是实现类。
3.抽象层尽量保持稳定,一旦确定即不允许修改。
六大设计原则主要是Java面向对象编程设计的原则,降低项目耦合,分清职责。方便开发和继续维护。