您的位置:首页 > 其它

设计模式之开放--封闭原则学习

2012-05-04 09:22 134 查看
开放封闭原则:软件实体应该可以扩展,但是不可以修改。它有两个特性:一,对扩展是开放的,二:对修改是封闭的。开放即可以操作,关闭即不可以操作。在设计模式中,这种不能修改却可以扩展的思想,就是开放封闭原则、

我们在做任何系统时,不要奢望系统一开始需求就确定。这是不现实也是不科学的。既然需求是变化的,那么如何在需求变化时,软件相对容易修改,不至于说新的需求一来整个程序就得推到重来。怎样的需求才能面对需求的更改,却可以保持相对的稳定,从而使系统在推出第一个版本后不断地推出新的版本呢。开放—封闭模式给了我们答案。设计软件要容易维护又不容易出问题的最好方法就是:多扩展少修改。

开放封闭的意思是说:我们在设计类的时候,时刻要考虑如何使类设计的足够好,写好之后就不再修改了。如果需求有变只需要增加其他的类就可以了。原来的代码能不动则不动。但是绝对的不修改是不可能的。无论模块多么封闭,都会存在一些与之无法封闭的变化,既然不可能是完全变化封闭,设计人员必须对他设计的模块要应对哪些变化做出选择。他必须先抽象出变化的种类。然后构造抽象类来隔离那些变化。

无论考虑多么周全,总会遇到意料之外的变化,此时采取:遇到变化立即行动的原则。。在最初设计时假设不会发生变化,当变化发生时,就立即创建抽象来隔离以后发生的同类变化。例如在创建加法程序的时候,创建一个加法类,就很容易实现要求。如果后来又要写一个减法类,增加功能,就需要对原来的加法类进行修改,这就违背了开放—封闭原则。于是就考虑采取重构程序,抽象出一个运算的基类,然后派生出加法和减法运算。既满足了要求,又使程序具备可扩展性。以后如果要添加乘除法,就可以在不修改原有类的基础上很容易的构造出来。

开放封闭原则是面向对象思想的核心所在。遵循这个原则可以带来面向对象技术声称的巨大好处。即可维护、可扩展、可复用、灵活性好。设计人员应该针对程序中频发变化的那些部分做出抽象。所以抽象的能力也非常重要。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: