zoukankan      html  css  js  c++  java
  • 设计模式(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分支,这显然就是违背了开放-封闭原则的。

  • 相关阅读:
    ssh-keygen Linux 免密登录
    hostnamectl 修改 CentOS7 主机名
    微信公众平台开发—24点游戏
    微信公众平台开发—起步
    java的静态代理和动态代理(jdk、cglib)
    UEditor上传图片到七牛云储存(java)
    第四十篇-private,public,protected的区别
    第七篇--ubuntu18.04下面特殊符号
    6. 计算器界面
    第六篇--Ubuntu画图软件
  • 原文地址:https://www.cnblogs.com/a294098789/p/5593108.html
Copyright © 2011-2022 走看看