开放封闭原则(设计模式_04)
2016-12-14 18:33
232 查看
由来:开放封闭式原则是遵循面向对象思想开发扩展性的体现,简单明了的理解就是,对修改关闭,对扩展开放,以下写一个例子来体现:
运行结果:
以上是一个客户端调用加法类完成一个简单的计算,如果需求有变,要增加 乘法,减法,除法,我们改如何去改呢,如果去修改AddCount类,就违背了开放封闭式原则,我们要对修改关闭,对扩展开放,如何对扩展开放呢?
以下就是对扩展开放的写法:
以上案例中可以看出,开放封闭式原则,对扩展实行了开发,对修改是关闭的,这样做有什么好处呢???
答:这样做的好处有,降低耦合度,扩展功能更好…….
开放封闭式原则:希望你对痛苦关闭,对快乐开放
谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn. 4000
net/u011967006
// 加法类 public class AddCount { public double countMethod(double count1, double count2) { return count1 + count2; } } // 客户端调用计算结果 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("input number 1 ..."); double number1 = Double.parseDouble(scanner.nextLine()); System.out.println("input + - * / ..."); String string = scanner.nextLine(); System.out.println("input number 2 ..."); double number2 = Double.parseDouble(scanner.nextLine()); AddCount addCount = new AddCount(); double result = 0; if ("+".equals(string)) { result = addCount.countMethod(number1, number2); } System.out.println(result); } }
运行结果:
以上是一个客户端调用加法类完成一个简单的计算,如果需求有变,要增加 乘法,减法,除法,我们改如何去改呢,如果去修改AddCount类,就违背了开放封闭式原则,我们要对修改关闭,对扩展开放,如何对扩展开放呢?
以下就是对扩展开放的写法:
// 定义一个计算接口 public interface ICount { public double countMethod(double number1, double number2); } // 加法类 public class AddCount implements ICount{ public double countMethod(double count1, double count2) { return count1 + count2; } } // 除法类 public class DivisionCount implements ICount { public double countMethod(double number1, double number2) { return number1 / number2; } } // 减法类 public class MinusCount implements ICount{ public double countMethod(double count1, double count2) { return count1 - count2; } } // 乘法类 public class MultiplicationCount implements ICount{ public double countMethod(double number1, double number2) { return number1 * number2; } } // 客户端来验证: public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("input number 1 ..."); double number1 = Double.parseDouble(scanner.nextLine()); System.out.println("input + - * / ..."); String string = scanner.nextLine(); System.out.println("input number 2 ..."); double number2 = Double.parseDouble(scanner.nextLine()); ICount count = null; double result = 0; if ("+".equals(string)) { count = new AddCount(); } else if ("-".equals(string)) { count = new MinusCount(); } else if ("*".equals(string)) { count = new MultiplicationCount(); } else { count = new DivisionCount(); } result = count.countMethod(number1, number2); System.out.println(result); } }
以上案例中可以看出,开放封闭式原则,对扩展实行了开发,对修改是关闭的,这样做有什么好处呢???
答:这样做的好处有,降低耦合度,扩展功能更好…….
开放封闭式原则:希望你对痛苦关闭,对快乐开放
谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn. 4000
net/u011967006
相关文章推荐
- <总结> 设计模式之 开放封闭原则OCP C++示例
- 致我们工作中的设计模式之设计原则---开放封闭原则
- 设计模式学习之开放封闭原则与依赖倒置原则
- 设计模式-开放封闭原则
- [设计模式原则]第六回:开放封闭原则
- 设计模式——开放-封闭原则
- 设计模式-开放封闭原则
- 设计模式心得(四) 开放——封闭原则
- 设计模式六大原则-单一职责原则、开放封闭原则、依赖倒转原则、里氏代换原则、迪米特法则、合成/聚合复用原则
- 设计模式——开放封闭原则
- 开放封闭原则、 设计模式六大原则(3):依赖倒置原则
- 设计模式-----开放--封闭原则
- 设计模式原则(单一、开放封闭、里氏代换、依赖倒转、迪米特法则五大原则)
- 设计模式 开放封闭原则 OCP
- 设计模式之开放封闭原则
- 设计模式之四——开放-封闭原则
- 设计模式学习笔记三:开发原则,开放-封闭原则,依赖倒转原则
- 设计模式学习--面向对象的5条设计原则之开放封闭原则--OCP
- 设计模式六大原则(2):开放封闭原则
- 设计模式学习笔记四【开放-封闭原则】