设计模式之王者原则 开闭原则
为什么说 它--开闭原则是王者原则呢? 因为所有原则都是围绕它来实现的,怎么说呢,为什么会有这么多原则呢,都是为了完成它,只要实现它你的代码就不会有什么大的问题
一、定义
软件实体应该对扩展开放,对修改关闭。
一句简单的话,实现起来很难,简单说就是,不管未来你的需求有什么变化,源代码一点不改,只加一些新的模块,原来的不变。怎么可能,是吧?只是这么一说,就像GC主义一样,很好吧,实现很难,但我们还是要尽力这样走下去。
二、好处
- 对于测试的影响
因为我们只是扩展模块,不改变原有代码,所以测试时只需要测试新的模块,原先代码一定没有问题。
2. 可以提高代码复用性
3. 可以提高可维护性
三、代码示例
比方说,我现在要开一家电子产品店,买一些电子产品,刚开始我只卖笔记本电脑,手机,以后可能加MP3什么的,现在实现这个功能怎么办?
我是不是应该 整两个实体类 computer和phone两个类 不对,要是再加MP4呢 原有代码肯定有改变,所以这样做:
一个电子产品接口
然后是 一开始的 手机和电脑类
最后是商店类
看看结果如何:
................................商品列表...............................
苹果--MC700CH/A 价格:¥8700, CPU:Intel 酷睿i5 2410M
联想ThinkPad T410i 价格:¥9999, CPU:Intel 酷睿i5 480M
摩托罗拉ME722 价格:¥3200 是否智能:true
三星i9003 价格:¥3200 是否智能:true
如果后期要添加MP4 很简单:
先添加一个MP4类 实现IElectronics接口
再改一下MyShop
再看看结果:
................................商品列表...............................
苹果--MC700CH/A 价格:¥8700, CPU:Intel 酷睿i5 2410M
联想ThinkPad T410i 价格:¥9999, CPU:Intel 酷睿i5 480M
摩托罗拉ME722 价格:¥3200 是否智能:true
三星i9003 价格:¥3200 是否智能:true
台电C520 价格:¥499 大小:800×480
原道N5 PRO2 价格:¥499 大小:800×480