设计原则--开放-封闭原则(OCP)
2019独角兽企业重金招聘Python工程师标准>>>
软件实体(类、模块、函数等等)应该是可以扩展的,但是不能修改的。
如果程序中的一处改动就会产生连锁反应,导致一系列样模块的改动,那么设计就具有有僵化的臭味.
OCP建议我们应该对系统进行重构,这样以后对系统再进行那样的改动时,就不会导致更多的修改。如果正确地应用OCP,那么以后再进行同样的改动时,就只需要添加新的代码,而不必改动已经正常运行的代码。
也许,这看起来像是众所周知的可望而不可即的美好理想——然而,事实上却有一些相对简单并且有效的策略可以帮助接近这个理想。
描述
1.对于扩展是开放的(Open for extension)
2.对于更改是封闭的(Closed for modification)
这两个特征好像是互相矛盾的。扩展模块的行为的通常方式就是修改该模块的源代码。不允许修改的模块常常都被认为是具有固定的行为。
关键是抽象
在C++,Java或者其他任何的OOPL中,可以创建出
转载于:https://my.oschina.net/lavedream/blog/666035
设计原则--开放-封闭原则(OCP)相关推荐
- 软件设计原则 — 开放封闭原则
一.开闭原则的定义 Software entities like classes,modules and functions should be open for extension but clos ...
- 单一原则,开放-封闭原则,依赖反转,里氏族替换原则
读书笔记:大话设计模式 单一职责原则 单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因 例子 一个俄罗斯方块游戏设计思路 其中游戏业务逻辑: 数据的每一项值变化的问题,下落,旋转,碰 ...
- 设计原则(单一职责原则 开放封闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则)
设计原则 单一职责原则(SRP) 从三大特性角度看原则: 应用的设计模式: 开放封闭原则(OCP) 从三大特性角度看原则: 应用的设计模式: 里氏替换原则(LSP) 从三大特性角度看原则: 应用的设计 ...
- 面象对象设计6大原则之二:开放封闭原则
转载自 面象对象设计6大原则之二:开放封闭原则 开放封闭原则(OCP),The Open Closed Principle 定义 一个软件的实体,包括类.方法.模块.应该对扩展开放,对修改关闭. 也就 ...
- 设计原则之一:开放封闭原则
1:什么是开放封闭原则 开放封闭原则(Open-Closed Principle):一个软件实体应当对扩展开放(open),则修改关闭(不修改原来的代码这就是closed).在设计一个模块时,应当使得 ...
- 开放封闭原则(OCP)
开放封闭原则:软件实体(类,模板,函数等)应该是可以扩展的,但是不可以修改. 举个栗子,加入我们要设计一个系统,在项目启动的时候我们不可能一下子把所有的需求全部考虑到. 我们所需要做的就是多扩展,少修 ...
- 开放-封闭原则(OCP)
开放-封闭原则(The Open-Close Principle) 软件实体(类.模块.函数等)应该是可以扩展的,但是不可以修改的. 两个特征 1.对于扩展是开放的(Open for extensio ...
- 五大软件设计原则学习笔记2——开放封闭原则
五大软件设计原则SOLID: 单一职责原则(Single responsibility principle,SRP) 开放封闭原则(Open–closed principle,OCP) Liskov ...
- 《Android之大话设计模式》--设计原则 第三章:开放封闭原则 孙悟空任弼马温一职
应用场景举例: 孙悟空从东海龙宫拿到定海神针如意金箍棒后回到花果山,和自己的部下过着自由自在的生活.那只好景不长,因为他在地狱删除了自己和花果山所有猴子的名单,同时又拿走了定海神针,不久便被阎王和龙王 ...
最新文章
- overlay网络的优势
- android UI定位工具-uiautomator2的使用
- html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式
- 进程及 fork() 系统调用详解
- hive 结构metastone_深入理解hive之事务处理
- 工作177:时间戳转换
- 5位数的数字黑洞是多少_每日一题[491]数字黑洞--Kaprekar常数
- 吐槽贴:用ELECTRA、ALBERT之前,你真的了解它们吗?
- 手机淘汰了多少机器,你怎么看?
- 紧急通知:招募 2000 名 IT 人学英语,免费培训!
- 距离矢量路由算法_距离矢量路由协议是如何巧妙的利用一种消息就完成失效路由通告、以及失效路由备份路径查询及查询响应。...
- 计算机实数表示法---浮点数(一)
- 坦白说php源码,qq坦白说新思路解密 附源码
- 梦幻手游最新服务器,《梦幻西游》手游服务器如何选择 新区还是老区
- python歌词图表分析_Python可视化图分析毛不易的《入海》,看看听歌的人都在想些什么...
- 如何修改非root用户的ulimit -n的值
- 海天蚝油《挑战不可能》清华博士远程驾驶无人车迎战高难度车道
- 为什么说“水果焦虑”是个伪命题?
- 【DASH】MPD例子
- 如何求一个关系模式的候选码