文档章节

设计原则-->开放-封闭原则(OCP)

@ccny
 @ccny
发布于 2016/04/25 18:53
字数 379
阅读 58
收藏 2

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

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

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

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

描述

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

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

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

关键是抽象

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

© 著作权归作者所有

共有 人打赏支持
@ccny

@ccny

粉丝 14
博文 113
码字总数 26759
作品 0
东城
架构师
私信 提问
设计模式---设计原则(OCP,SRP...)

1、顺口溜: 开里和依单迪 合成聚合复用 面向对象中的五大设计原则: solid: srp ocp lod isp dip srp:Single responsibility principle ocp:Open Closed Principle lod:Law of Demeter isp:...

amosli
2015/12/16
180
0
PHP核心技术与最佳实践 读书笔记 第二章 面向对象的设计原则

第二章 面向对象的设计原则 2.1 面向对象设计的五大原则 单一职责原则 接口隔离原则 开放-封闭原则 替换原则 依赖倒置原则 2.1.1 单一职责原则SRP 单一职责有两个含义:一个是避免相同的职责...

lilugirl
2014/03/25
0
0
开放关闭原则

1.开放封闭原则(OCP,Open Closed Principle)是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。其他的设计原则,很...

金馆长1
2015/12/13
16
0
面向对象 三大特性 五大基本原则

以前一直认为程序中的类有使用到封装,继承,多态就是面向对象设计,其实不然 封装,继承,多态只是面向对象的三大特性,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就...

度_
2018/10/14
0
0
面象对象设计6大原则之二:开放封闭原则

开放封闭原则(OCP),The Open Closed Principle 定义 一个软件的实体,包括类、方法、模块、应该对扩展开放,对修改关闭。 也就是说一个软件的实体应该通过扩展的方式来修改变化,而不是修...

java技术栈
2017/08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

带你看数据挖掘与机器学习-厦大EDP上课出勤预测

带你看数据挖掘与机器学习-厦大EDP上课出勤预测 标签: 数据挖掘 特征工程 机器学习 出勤预测 write by xmhexi 2019/3/22 内容提要 首先说明本文是一篇科普文章,通过一个实际案例,帮助理解什...

xmhexi
今天
41
0
IOS  学习记录

1.StackView=>IOS 9及以上支持 2.布局方式: AutoLayout / StackView 堆布局 (线性布局) 3.屏幕适配 (资源分辨率、设计分辨率、屏幕分辨率) Size Class技术 可以针对 屏幕的方向进行设置...

萨x姆
今天
4
0
第四次工业革命:自主经济的崛起

https://36kr.com/p/5170370.html

shengjuntu
昨天
3
0
Cloud Native 与12-Factor

12-Factor(twelve-factor),也称为“十二要素”,是一套流行的应用程序开发原则。Cloud Native架构中使用12-Factor作为设计准则。 12-Factor 的目标在于: 使用标准化流程自动配置,从而使...

waylau
昨天
10
0
java多线程2

“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在线程安全问题。这是因为方法内部的变量都是私有造成的。 synchronized 获取的都是对象锁。如果多个线程访问多个...

一滴水穿石
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部