OCP开放闭合

系统 2181 0

软件应该是可以扩展的,但是不可以修改的。

对扩展都是开放的,模块式可以扩展来满足新的行为,我们可以改变模块的功能。

 

OCP的好处是,尽可能的减少修改模块的次数和范围,从而提高代码的可维护性,复用性。比如操作系统的升级补丁,在修复bug的情况下,肯定是越小越小。如果说OCP做的不好,每次修改需要修改大量的文件,那就会导致补丁很大。

对于修改是封闭的,在扩展模块的时候,不必改动源代码的二进制文件,不管是.o文件还是.dll文件都不用改动。

问题的核心是怎么样改变了模块的功能却又不改变模块的代码呢?

关键是抽象!

比如说,client类会调用server的一些接口,这样就会对server产生依赖,如果想换一个server,那就需要修改client,这就违反了,OCP。好的做法是让client依赖于一个接口,这样client不会关注server的具体实现。

OCP开放闭合     

OCP开放闭合

需要注意的一点是,为什么叫client interface而不是叫server Base?因为抽象类和它客户的关系比和实现他们的类的关系更加重要。

 

真正的OCP是不可能会实现的,我们只能在可以预见的范围内分析软件的变化及不变,进行取舍。为了实现OCP而进行的过度的抽象是非常划不来的。

 

 

 

OCP开放闭合


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论