java设计模式_开放封闭原则
2016-08-11 21:26
253 查看
一、什么是开放封闭原则
开放封闭原则(Open-Closed Principle):一个软件实体 应当对扩展开放,则修改关闭。在设计一个模块时,应当使得这个模块可以在不被修 改的前提下被扩展。也就是说,应当可以在不必修改源 代码的情况下修改这个模块的行为。
设计的目的便在于面对需求的改变而保持系统的相对 稳定,从而使得系统可以很容易的从一个版本升级到另 一个版本。
二、怎样做到开放封闭原则
实际上,绝对封闭的系统是不存在的。无论模块是怎 么封闭,到最后,总还是有一些无法封闭的变化。而我们的思路就是:既然不能做到完全封闭,那我们就应该 对那些变化封闭,那些变化隔离做出选择。我们做出选
择,然后将那些无法封闭的变化抽象出来,进行隔离, 允许扩展,尽可能的减少系统的开发。当系统变化来临 时,我们要及时的做出反应。
我们并不害怕改变的到来。当变化到来时,我们首 先需要做的不是修改代码,而是尽可能的将变化抽象出 来进行隔离,然后进行扩展。面对需求的变化,对程序 的修改应该是尽可能通过添加代码来实现,而不是通过 修改代码来实现。
实际上,变化或者可能的变化来的越早,抽 象就越容易,相对的,代码的维护也就越容易; 而当项目接近于完成而来的需求变化,则会使抽
象变得很困难——这个困难,并不是抽象本身的 困难,抽象本身并没有困难,困难在于系统的架构已经完成,修改牵扯的方面太多而使得抽象
工作变得很困难。
三、繁忙的银行业务员
四、轻松的银行业务员
1.通过扩展已有的软件系统,可以提供新的行 为,以满足对软件的新需求,是变化中的软件有 一定的适应性和灵活性。
2.已有的软件模块,特别是最重要的抽象模 块不能再修改,这就使变化中的软件系统有一定 的稳定性和延续性。
//示例1: /* * 银行业务员 */ public class BankWorker { //负责存款业务 public void saving(){ System.out.println("进行存款操作"); } //负责取款业务 public void drawing(){ System.out.println("进行取款操作"); } //负责转账业务 public void zhuanzhang(){ System.out.println("进行转账操作"); } //负责基金的申购 public void jijin(){ System.out.println("进行基金申购操作"); } } public class MainClass { public static void main(String[] args) { BankWorker bankWorker = new BankWorker(); //存款 bankWorker.saving(); //取款 bankWorker.drawing(); //转账 bankWorker.zhuanzhang(); //基金 bankWorker.jijin(); } } //进行存款操作 //进行取款操作 //进行转账操作 //进行基金申购操作 //示例2: /* * 银行业务员接口,是所有银行业务员的抽象父类. */ public interface BankWorker { void operation(); } /* * 负责存款业务的业务员 */ public class SavingBankWorker implements BankWorker { @Override public void operation() { System.out.println("进行存款操作"); } } /* * 负责取款业务的业务员 */ public class DrawingBankWorker implements BankWorker { @Override public void operation() { System.out.println("进行取款操作"); } } /* * 负责转账业务的业务员 */ public class ZhuanZhangBankWorker implements BankWorker { @Override public void operation() { System.out.println("进行转账操作"); } } public class JiJinBankWorker implements BankWorker { @Override public void operation() { System.out.println("进行基金申购操作"); } } public class MainClass { public static void main(String[] args) { BankWorker bankWorker = new SavingBankWorker(); bankWorker.operation(); BankWorker bankWorker2 = new DrawingBankWorker(); bankWorker2.operation(); BankWorker bankWorker3 = new ZhuanZhangBankWorker(); bankWorker3.operation(); BankWorker bankWorker4 = new JiJinBankWorker(); bankWorker4.operation(); } } //进行存款操作 //进行取款操作 //进行转账操作 //进行基金申购操作
相关文章推荐
- 浅谈Java设计模式之开放封闭原则
- java设计模式-开放-封闭原则
- 设计模式之四——开放-封闭原则
- 设计模式——开放-封闭原则
- 五 单一职责、开放—封闭、依赖倒转原则——设计模式学习笔记
- 设计模式原则----开放封闭原则
- 设计模式之开放--封闭原则学习
- 设计模式之开放封闭原则
- 设计模式原则(单一、开放封闭、里氏代换、依赖倒转、迪米特法则五大原则)
- [设计模式原则]第六回:开放封闭原则
- 设计模式-开放封闭原则
- 设计模式心得(四) 开放——封闭原则
- 设计模式原则(单一、开放封闭、里氏代换、依赖倒转、迪米特法则五大原则)
- 设计模式学习笔记三:开发原则,开放-封闭原则,依赖倒转原则
- 设计模式——开放封闭原则
- 设计模式-开放封闭原则
- 开放封闭原则、 设计模式六大原则(3):依赖倒置原则
- 致我们工作中的设计模式之设计原则---开放封闭原则
- 设计模式学习笔记四【开放-封闭原则】
- 设计模式-开放封闭原则