设计模式之四——开放-封闭原则

开放-封闭原则

    是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。
    这个原则其实是有两个特征,一个是说“对于扩展是开放的(open for extension)”,另一个是说“对于更改是封闭的(closed for modification)”
    怎样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新版本呢?
    无论模块是多么的“封闭”,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。
    开放-封闭原则的意思就是说,在设计的时候,时刻要考虑,尽量让这个类足够好,写好了就不要去修改了,如果新需求来,增加一些类就可以了,原来的代码能不动则不动。

     无论模块是多么“封闭”,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对应哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。(用虚函数去实现这个功能)
     在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。
     比如之前写的加法程序,最初是在界面所在的类中完成,此时变化还没有发生。然后我们加一个减法功能,我们发信啊,增加功能需要修改原来这个类,这就违背了“开放-封闭原则”,于是我们考虑重构程序,增加一个抽象的运算类,通过一些面向对象的手段,如继承,多态等来隔离具体加法,减法与界面的耦合,需求依然可满足,还能应对变化。这时,如果我再加乘法除法功能,就不需要再回去更改界面以及加法减法类了,而是增加乘法和除法子类就可以了。

      面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。这就是“开放-封闭原则”的精神所在。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值