笔试题:面向对象设计的五大原则?你的设计违背了哪一条,结合开发经验。
去凯兰高面试时,让做的笔试卷里的一道题,当时觉得完全没听过,现在记录一下,保不准什么时候又被问到。
在面向对象设计中,如何通过很小的设计改变就可以应对设计需求的变化,这是令设计者极为关注的问题。
为此不少OO先驱提出了很多有关面向对象的设计原则用于指导OO的设计和开发。
Bob大叔提出并发扬了S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是:
单一职责原则SRP:Single Responsibility Principle
本原则是我们非常熟悉地"高内聚性原则"的引申
开放封闭原则OCP:Open-Close Principle(开闭原则)
一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。因此在进行面向对象设计时要尽量考虑接口封装机制、抽象机制和多态技术。
Liskov替换原则LSP:Liskov Substitution Principle(里氏替换原则)
子类应当可以替换父类并出现在父类能够出现的任何地方。
接口隔离原则ISP:Interface Separate Principle
采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。
依赖倒置原则DIP:Dependency Invertion Principle
在进行业务设计时,与特定业务有关的依赖关系应该尽量依赖接口和抽象类,而不是依赖于具体类。具体类只负责相关业务的实现,修改具体类不影响与特定业务有关的依赖关系。