开闭原则

# 开闭原则(Open-Closed Principle) ## 定义 一个软件实体例如类,模版和函数应该对扩展开发,对修改关闭。(用抽象构建框架,用实现扩展细节) ## 开闭原则的优点 1、提高软件系统的可复用性以及可维护性; 2、在软件测试方面,只需要对扩展的代码进行测试就可以,原有的测试代码不变; ## 开闭原则的实现 开闭原则是面向对象设计的最基本的原则。 我们平时开发的产品上线之后需要我们长期的维护,我们应该尽量少的去修改老的代码,而是应该通过扩展或添加新的类来实现我们的新需求,这样来规避线上稳定服务遭到破坏的风险。 在实际的开发过程中可能的体现在实现一个功能的时候不是去修改一个字段而是增加一个字段或者方法来实现功能; ![](https://oscimg.oschina.net/oscnet/up-3367e189f6b72a93a870166a06fcb3ffc5e.png) 比如我们有一个课程我们一开始是有三个字段的,课程id,课程名称,课程原价。但是可能一些课程在 某些特定的节日会促销打折,这个在电商行业是非常普遍的需求。所以需要拿到打折之后的价钱,同时呢,活动不一定会针对每个人都打折的, 可能是Vip用户的会有折扣,普通用户没有折扣,或者说两个角色的折扣比例不一致。这个时候就应该增加一个方法来获取折扣价格, 而不是去修改之前线上在使用的课程原价,这样就叫做对扩展开发,对修改关闭;