聊聊面向对象的设计原则
面向对象的初衷是应对需求变化、简化设计,提升组件复用性,使系统更稳定、易扩展易维护,而不是让系统更复杂,只开发写一次代码,重复造乱子。
- 开闭原则:对扩展开放,对修改关闭,是面向对象的目标原则,是最终想达到的状态。因为对修改关闭,所以原有功能稳定不会被改出新问题,因为扩展开放,所以可以新增功能应对需求变更。
- 里氏替换原则:子类替换父类,凡是父类或接口出现的地方都可以用它的子类或实现楼代替,它体现了继承的思想,正因为它才能复用代码使开闭原则有了实现的可能。
- 依赖倒置原则:具体依赖抽象,高层、低层依赖接口,它是实现开闭原则的主要手段。有了它才好做到对修改关闭,对扩展开放。
- 接口隔离原则:客户端不应依赖它不需要的接口,类间的依赖关系应建立在最小的接口上。接口隔离原则将非常庞大、臃肿的接口拆分成为更小的和更具体的接口,这样客户将会只需要知道他们感兴趣的方法。接口隔离原则的目的是系统解开耦合,从而容易重构、更改和重新部署。
- 迪米特法则:一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,类的内部如何实现、如何复杂都与调用者或者依赖者没关系,调用者或者依赖者只需要知道他需要的方法即可,其他的我一概不关心。类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。
- 单一职责原则:一个类应该只有一个引起它变化的原因。
- 组合继承原则:尽可能多用组合、少用继承。后者是编译时静态绑定,后者可以运行时动态确定,更灵活易扩展。