设计模式(4)-----开放,封闭原则

开放封闭原则(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分支,这显然就是违背了开放-封闭原则的。

原文地址:https://www.cnblogs.com/a294098789/p/5593108.html