设计原则----开放封闭原则(OCP)
开放-封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。
该定义包含两个特征:
1.对于扩展是开放的
2.对于更改是封闭的
我们在做任何系统的时候,都不要指望系统一开始时需求确定,就再也不会变化,这是不现实也不科学的想法,而既然需求是一定会变化的,那么如何在面对需求的变化,设计的软件可以相对容易修改,不至于说,新需求以来,就要把整个程序推到重来。怎样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一版本以后不断地推出新的版本呢?开发-封闭原则给了我们答案。
绝对的对修改关闭是不可能的。无论模块是多么地“封闭”,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭作出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。
需求的变化有时候可能很难预先猜测,但我们却可以在发生小变化时,就及早去想法应对发生更大变化的可能。也就是说,等到变化发生时立即采取行动。
在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现在的代码。这就是‘开放-封闭原则’的精神所在。
分享到:
相关推荐
面向对象设计原则 单一职责原则--SRP 开放封闭原则--OCP Liskov替换原则--LSP ===
c# 设计模式 开放封闭原则
面向对象 设计原则 单一职责原则--SRP 开放封闭原则--OCP Liskov替换原则--LSP 依赖倒置原则--DIP 接口隔离原则--ISP
这是一个可拓展的对内封闭的技能管理器模板,可以直接运行和更改功能 让技能实现依赖于固定的抽象,通过覆写其方法...开放封闭原则正是对这一目标的最直接体现,而其他的设计原则,很多时候也是为实现这一目标服务的。
开放封闭原则就相对的解决了这个问题,它强调的是你设计的模块应该从不改变(绝对不改变是不可能的,只能相对少改动)。当需求变化时,你可以通过添加新的代码来扩展这个模块的行为,而不去更改那些已经存在的可以...
面向对象设计原则单一责任原则SRP开放封闭原则OCP
本篇文章主要介绍了浅谈Java设计模式之开放封闭原则,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
单一责任原则 开放封闭原则 依赖到转原则 里氏替换原则 最少知识原则 迪米特法则
主要介绍了浅谈C#设计模式之开放封闭原则,需要的朋友可以参考下
5大设计原则:SOLID S 单一职责原则 O 开放封闭原则 L 李氏置换原则 I 接口独立原则 D 依赖倒置原则
开放-封闭原则 "开放-封闭原则"实质上是指当一个设计中增加新的模块时,不需要修改现有模块。 第15页/共30页 Java面向对象程序设计杨晓燕面向对象基本原则和模式全文共30页,当前为第15页。 子类型能够替换基类型...
主要介绍了开放封闭原则,开放-封闭原则是面向对象设计的核心所在,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
单一职责原则(SRP)、开放-封闭原则(OCP)、Liskov替换原则(LSP)、依赖倒置原则(DIP)、接口分离原则(ISP)
开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。 依赖倒转原则(DIP),A. 高层模块不应该依赖低层模块,两个都应该依赖抽象。B. 抽象不应该依赖细节,细节应该依赖抽象。 ...
C# 版本,OCP原则的Demo,内部培训资料。
1. 单一职责原则 2. 依赖倒置原则 3. 迪米特法则 4. 开放-封闭原则 5. 里氏替换原则(了解) 6. 接口隔离原则(了解)
开放封闭原则(Open-Closed Principle,OCP):软件实体应该对扩展开放,对修改关闭。这意味着当需要添加新功能时,应该通过扩展现有代码来实现,而不是修改已有代码。这样可以保持现有功能的稳定性。 里氏替换原则...
单一职责原则——SRP 开放封闭原则——OCP Liskov替换原则 —— LSP 依赖倒置原则—— DIP 接口隔离原则—— ISP