【设计模式】开放-封闭原则
2016-01-02 09:14
337 查看
开放封闭原则OCP
Open-Closed Principle,对于软件实体(类、模块、函数等等)应该是可扩展的,即扩展是开放的,但是是不可更改的,即更改是封闭的。直接体现软件设计本所追求的目标:封装变化,降低耦合。
无论模块是多么的'封闭',都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员必须对于他设计的模块应该对那种变化封闭做成选择,他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。
面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
开放-封闭原则就是为了以后发现问题做出改动所提供了前提,然而查明可能发生的比那花所等待的时间越长,要创建正确的抽象就越困难
在现实中,我们不肯定会面临机会,例如在考研时面临就职问题,如果我们只是埋头在考研,就像有人说的,我们不可能一整天都在学习,那样效果也不好,我们完全可以抽出一点时间,不影响自己复习的前提下,写写自己的简历,去面面试什么的,了解招聘的咨询,这样岂不是更好,两面都不耽误。这个例子中考研时大目标,不可修改,写简历面试时对自己的计划扩展。这就是对扩展开放,对修改关闭的意义。
其实,我们面临这种事情不仅仅是一件两件的事,我们不要全部去否决,要适当去根据自己的情况做出调整。其他事情并非是不适合我们,对我们不利的。
开放-封闭原则是对面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声明的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序总程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的对象和抽象本身一样重要。
Open-Closed Principle,对于软件实体(类、模块、函数等等)应该是可扩展的,即扩展是开放的,但是是不可更改的,即更改是封闭的。直接体现软件设计本所追求的目标:封装变化,降低耦合。
无论模块是多么的'封闭',都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员必须对于他设计的模块应该对那种变化封闭做成选择,他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。
面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
开放-封闭原则就是为了以后发现问题做出改动所提供了前提,然而查明可能发生的比那花所等待的时间越长,要创建正确的抽象就越困难
在现实中,我们不肯定会面临机会,例如在考研时面临就职问题,如果我们只是埋头在考研,就像有人说的,我们不可能一整天都在学习,那样效果也不好,我们完全可以抽出一点时间,不影响自己复习的前提下,写写自己的简历,去面面试什么的,了解招聘的咨询,这样岂不是更好,两面都不耽误。这个例子中考研时大目标,不可修改,写简历面试时对自己的计划扩展。这就是对扩展开放,对修改关闭的意义。
其实,我们面临这种事情不仅仅是一件两件的事,我们不要全部去否决,要适当去根据自己的情况做出调整。其他事情并非是不适合我们,对我们不利的。
开放-封闭原则是对面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声明的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序总程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的对象和抽象本身一样重要。
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- 27 个全方位的开放式教育解决方案
- PHP设计模式之装饰者模式代码实例
- php设计模式之单例模式实例分析
- 介绍php设计模式中的工厂模式
- PHP设计模式之适配器模式代码实例
- 深入浅出23种设计模式
- 浅谈c#设计模式之单一原则
- C#设计模式之观察者模式实例讲解
- C#设计模式之单例模式实例讲解
- 学习JavaScript设计模式(接口)
- 深入理解JavaScript系列(28):设计模式之工厂模式详解
- 面向对象设计模式的核心法则
- JavaScript设计模式之单件模式介绍