码迷,mamicode.com
首页 > 其他好文 > 详细

开放-封闭原则

时间:2018-01-13 23:40:04      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:反思   重要   系统   而不是   必须   bsp   重构   net   软件   

举个栗子,如果不是邓小平提出一国两制的思想,香港澳门不会那么顺利回归。

原因主要是大陆的社会主义制度不能修改,而香港澳门长期在资本主义制度下管理和发展,所以回归时强行修改香港澳门的制度也不合理,所以用“一国两制”来解决制度差异造成的矛盾是最合理的办法。

在软件设计模式中,这种不能修改,但可以扩展的思想也是最重要的一种设计原则,就是 开放-封闭原则(The Open-Closed Principle,简称OCP)

开放-封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。

这个原则有2个特征,一个是“对于扩展是开放的”,另一个是“对于更改是封闭的”。

 

何时应对变化

我们在做任何系统的时候,都不要指望系统一开始时需求确定,就再也不会变化,这是不现实也不科学的想法。

设计的时候,时刻要考虑,尽量让这个类足够好,写好了就不要去修改,如果新需求来,增加一些类就完事了,原来的代码能不动则不动。

绝对的修改关闭是不可能的。无论模块多么的“封闭”,都会存在一些无法对之封闭的变化。

既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。

他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。

我们很难预测,但我们却可以在发生小变化时,就及早想办法应对发生更大变化的可能。

在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。

比如现在让你写一个加法程序,你在client类完成,此时变化还未发生。

然后我让你加一个减法,这时候你发现需要修改这个类,这就违背了开放-封闭原则

于是你考虑重构程序,增加一个抽象的算法类,继承它,每次只需要新增算法而不用修改client了

面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码

 

反思

学.net和学前端这两件事,.net学习是工作必须

所以学前端之前,.net学习不能更改,雷打不动的,这就是对修改关闭

但是如果只埋头学习.net,就等于放弃了将来很多好公司,和回老家的工作机会,毕竟.net只在北上广深才好找工作

所以完全可以抽出一点时间,在不影响.net学习和工作的前提下,来学习前端开发

既不影响.net学习和工作,又可以增加未来机会的可能性,这就是对扩展开放,对修改关闭的意义。

 

开放-封闭原则

标签:反思   重要   系统   而不是   必须   bsp   重构   net   软件   

原文地址:https://www.cnblogs.com/justinxhan/p/8280719.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!