2019独角兽企业重金招聘Python工程师标准>>>

软件实体(类、模块、函数等等)应该是可以扩展的,但是不能修改的。

如果程序中的一处改动就会产生连锁反应,导致一系列样模块的改动,那么设计就具有有僵化的臭味.

OCP建议我们应该对系统进行重构,这样以后对系统再进行那样的改动时,就不会导致更多的修改。如果正确地应用OCP,那么以后再进行同样的改动时,就只需要添加新的代码,而不必改动已经正常运行的代码。

也许,这看起来像是众所周知的可望而不可即的美好理想——然而,事实上却有一些相对简单并且有效的策略可以帮助接近这个理想。

描述

1.对于扩展是开放的(Open for extension)

2.对于更改是封闭的(Closed for modification)

这两个特征好像是互相矛盾的。扩展模块的行为的通常方式就是修改该模块的源代码。不允许修改的模块常常都被认为是具有固定的行为。

关键是抽象

在C++,Java或者其他任何的OOPL中,可以创建出

转载于:https://my.oschina.net/lavedream/blog/666035

设计原则--开放-封闭原则(OCP)相关推荐

  1. 软件设计原则 — 开放封闭原则

    一.开闭原则的定义 Software entities like classes,modules and functions should be open for extension but clos ...

  2. 单一原则,开放-封闭原则,依赖反转,里氏族替换原则

    读书笔记:大话设计模式 单一职责原则 单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因 例子 一个俄罗斯方块游戏设计思路 其中游戏业务逻辑: 数据的每一项值变化的问题,下落,旋转,碰 ...

  3. 设计原则(单一职责原则 开放封闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则)

    设计原则 单一职责原则(SRP) 从三大特性角度看原则: 应用的设计模式: 开放封闭原则(OCP) 从三大特性角度看原则: 应用的设计模式: 里氏替换原则(LSP) 从三大特性角度看原则: 应用的设计 ...

  4. 面象对象设计6大原则之二:开放封闭原则

    转载自 面象对象设计6大原则之二:开放封闭原则 开放封闭原则(OCP),The Open Closed Principle 定义 一个软件的实体,包括类.方法.模块.应该对扩展开放,对修改关闭. 也就 ...

  5. 设计原则之一:开放封闭原则

    1:什么是开放封闭原则 开放封闭原则(Open-Closed Principle):一个软件实体应当对扩展开放(open),则修改关闭(不修改原来的代码这就是closed).在设计一个模块时,应当使得 ...

  6. 开放封闭原则(OCP)

    开放封闭原则:软件实体(类,模板,函数等)应该是可以扩展的,但是不可以修改. 举个栗子,加入我们要设计一个系统,在项目启动的时候我们不可能一下子把所有的需求全部考虑到. 我们所需要做的就是多扩展,少修 ...

  7. 开放-封闭原则(OCP)

    开放-封闭原则(The Open-Close Principle) 软件实体(类.模块.函数等)应该是可以扩展的,但是不可以修改的. 两个特征 1.对于扩展是开放的(Open for extensio ...

  8. 五大软件设计原则学习笔记2——开放封闭原则

    五大软件设计原则SOLID: 单一职责原则(Single responsibility principle,SRP) 开放封闭原则(Open–closed principle,OCP) Liskov ...

  9. 《Android之大话设计模式》--设计原则 第三章:开放封闭原则 孙悟空任弼马温一职

    应用场景举例: 孙悟空从东海龙宫拿到定海神针如意金箍棒后回到花果山,和自己的部下过着自由自在的生活.那只好景不长,因为他在地狱删除了自己和花果山所有猴子的名单,同时又拿走了定海神针,不久便被阎王和龙王 ...

最新文章

  1. overlay网络的优势
  2. android UI定位工具-uiautomator2的使用
  3. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式
  4. 进程及 fork() 系统调用详解
  5. hive 结构metastone_深入理解hive之事务处理
  6. 工作177:时间戳转换
  7. 5位数的数字黑洞是多少_每日一题[491]数字黑洞--Kaprekar常数
  8. 吐槽贴:用ELECTRA、ALBERT之前,你真的了解它们吗?
  9. 手机淘汰了多少机器,你怎么看?
  10. 紧急通知:招募 2000 名 IT 人学英语,免费培训!
  11. 距离矢量路由算法_距离矢量路由协议是如何巧妙的利用一种消息就完成失效路由通告、以及失效路由备份路径查询及查询响应。...
  12. 计算机实数表示法---浮点数(一)
  13. 坦白说php源码,qq坦白说新思路解密 附源码
  14. 梦幻手游最新服务器,《梦幻西游》手游服务器如何选择 新区还是老区
  15. python歌词图表分析_Python可视化图分析毛不易的《入海》,看看听歌的人都在想些什么...
  16. 如何修改非root用户的ulimit -n的值
  17. 海天蚝油《挑战不可能》清华博士远程驾驶无人车迎战高难度车道
  18. 为什么说“水果焦虑”是个伪命题?
  19. 【DASH】MPD例子
  20. 如何求一个关系模式的候选码

热门文章

  1. Android中垃圾回收日志信息
  2. Android -- 短信
  3. 如何搞定putty乱码
  4. 被迫学计算机,电脑强迫人学习
  5. 的源码管理器中有感叹图标_玄说前端面试层层解析—关于 redux 的源码
  6. 基于session认证
  7. MySQL流程控制函数-case结构
  8. MySQL连接查询的分类
  9. SpringSecurity权限控制之异常处理方式二
  10. MyBatis 插件原理与自定义插件-应用场景分析