开放封闭原则:一个软件实体(如类、模块和函数)应该对扩展开放,对修改封闭。
开放封闭原则指的是:既然需求一定会随着时间发生变化,软件只有适应变化。但是,较好的方式是通过扩展软件实体的方式应对变化,而不是通过修改原有代码来适应变化。
开放封闭原则要求对修改关闭,但不做任何修改也是不可能的。
当变化发生时,我们尽量创建抽象层来隔离以后发生同类的变化.
变化大概可分为如下类别:
1.逻辑变化:一个业务逻辑具体的处理算法变化,而且是一个模块内部的变化,不涉及其他模块。这时,修改原有模块内的具体算法来应对比较好。
2.底层模块变化:低层模块变化必然需要与其耦合的高层模块做适当的修改来适应。
3.表现层变化:这种变化不是指的仅仅外观变化,而是指界面变化后需要业务逻辑做修改来变现的变化。此时就与原有设计是否较好的符合开放封闭原则有很大的关系。
开放封闭原则的好处:
1.有利于进行单元测试,减少变化给测试带来的工作量。
2.有利于业务逻辑的细化,提高代码的复用性。
3.通过扩展应对变化,提高系统的可维护性。
4.面向对象开发的要求。
开放封闭原则要求:
1.尽量使用“抽象”进行约束与联系。抽象的关系一旦制定,一般不要修改,因为所有模块的耦合是通过抽象的接口来进行的,修改抽象就意味着相关的所有模块都要进行修改。
2.项目契约要有非常强的约束力。项目一定产生一个规定,就要求所有成员遵守。
3.在有可能产生变化的点就要用”抽象“进行封装。
开放-封闭原则是面向对象的核心.开放人员应该对程序中频繁变化的不分做出抽象,拒绝过分抽象和不成熟的抽象.
———设计模式之禅