敏捷开发原则-OCP(开放-封闭原则)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
敏捷开发原则-OCP(开放-封闭原则)
OCP(The Open Closed Principle):
定义:
对拓展开放:也就是说模块的⾏为是可扩展的,当应⽤程序中的需求发⽣改变时,我们可以使模块表现出全新的或与以往不同的⾏为。
对更改封闭:模块的源代码是不可更改的,已经实现的功能源代码任何⼈都不允许修改。
开放针对的是新增的功能,更改针对的是已有的功能,所以这2个特征其实并不冲突,对新增拓展,对已有封闭。
⼀个简单的例⼦,在Client类中使⽤Service类,如果我们有多种不同的Service的实现需要在Client中处理,那么Client中就要使⽤Switch或者⼤量的if...else语句去判断
不同场景的时候要使⽤哪种Service,⽽且当Service的种类新增时,那么相应的Client中的语句也要做出相应的调整。
⼀个遵循OCP的设计,ServiceInterface是⼀个接⼝或者⼀个抽象类,Client中去使⽤这个抽象类,⽽DataSourceService和SocketService是ServiceInterface的派⽣类,那么不论派⽣类
中做了如何修改,或者新增其他的派⽣类,Client类中⽆需再对应的做出其他任何改动。
结论:在许多⽅⾯,OCP都是⾯向对象设计的核⼼所在,遵循这个原则可以带来灵活性,可重⽤性及可维护性等好处。