OOP七大设计原则
设计原则 | 一句话归纳 | 目的 |
---|---|---|
开闭原则 | 对扩展开放,对修改关闭 | 降低维护带来的新风险 |
依赖倒置原则 | 高层不应该依赖低层,要面向接口编程 | 更利于代码结构的升级扩展 |
单一职责原则 | 一个类只干一件事,实现类要单一 | 便于理解,提高代码的可读性 |
接口隔离原则 | 一个接口只干一件事,接口要精简单一 | 功能解耦,高聚合、低耦合 |
迪米特法则 | 不该知道的不要知道,一个类应该保持对其它对象最少的了解,降低耦合度 | 只和朋友交流,不和陌生人说话,减少代码臃肿 |
里氏替换原则 | 不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义 | 防止继承泛滥 |
合成复用原则 | 尽量使用组合或者聚合关系实现代码复用,少使用继承 | 降低代码耦合 |
-
开闭原则:
- 对扩展开放:某模块的功能是可扩展的,则该模块是扩展开放的。使软件系统的扩展性更强。
- 对修改关闭:某模块被其他模块调用,如果该模块的源代码不允许修改,则该模块修改关闭的。使软件系统的功能稳定性更强。
稳定性:开闭原则要求扩展功能不修改原来的代码,这可以让软件系统在变化中保持稳定。
扩展性:开闭原则要求对扩展开放,通过扩展提供新的或改变原有的功能,让软件系统具有灵活的可扩展性。
遵循开闭原则的系统设计,可以让软件系统可复用,并且易于维护。 -
依赖倒置原则:
细节具有多变性,而抽象层则相对稳定,应该面向接口(抽象)编程,而不是面向实现编程。
-
单一职责原则:
单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分
-
接口隔离原则:
客户端不应该*依赖于它不使用的方法,一个类对另一个类的依赖应该建立在最小的接口上。
以上两个定义的含义是:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。
-
迪米特法则:
一个类应该尽可能少的与类发生相互依赖,局限于与本类密切相关的类,降低耦合性。
-
里氏代换原则:
所有引用父类的地方必须能使用子类对象,且代码正常工作,不应该使用if/else判断类。
-
合成复用原则:
如果要使用继承关系,则必须严格遵循里氏替换原则。
合成复用原则是通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用。
参考资料:
http://c.biancheng.net/view/1322.html
https://blog.csdn.net/qq_34760445/article/details/82931002#The_OpenClosed_Principle_OCP_18