开放封闭原则(OCP)
定义
所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
例子
简单工厂模式就是违背了开放封闭原则的,所以后面才会有工厂模式,抽象工厂模式。
package com.csdhsm.designpattem.simplefactory; /** * @Title: Factory.java * @Package com.csdhsm.designpattem.simplefactory * @Description: 工厂类 * @author: Han * @E-mail: 294098789@qq.com * @date: 2016年6月16日 上午10:33:48 * @version:V1.0 */ public class Factory { private static Operator operator; public static Operator getOperator(String type) { if (type == null) { throw new NullPointerException(); } //根据运算符号获得对应的计算类(对字符串switch/case判断,只有jdk1.7以上版本) switch (type) { case "+": operator = new OperationAdd(); break; case "-": operator = new OperationSub(); break; case "*": operator = new OperationMul(); break; case "/": operator = new OperationDiv(); break; default: throw new RuntimeException("未能识别的符号!"); } return operator; } }
上面的代码是简单工厂的工厂类,实现的是根据运算符,进行四则运算选择,当我们有需求改变时,比如现在要增加一个开方的运算的时候,我们就需要对工厂类进行修改,添加swich/case分支,这显然就是违背了开放-封闭原则的。