zoukankan      html  css  js  c++  java
  • 设计模式2---工厂模式

    为了解决简单工厂模式的缺点,我们通过接口IFactory抽象出工厂类,然后每次增加一个操作类,我就增加工厂类,

    从而达到:对扩展开放,对修改关闭。

    还是计算器的问题:

    UML如下:

    factory 基类:

    public interface IOperatorFactory {
        AbstractOperator CreateOperation();
    }

    工厂类:

    package com.jayfulmath.designpattern.factory;
    
    import com.jayfulmath.designpattern.samplefactory.operator.AbstractOperator;
    import com.jayfulmath.designpattern.samplefactory.operator.OperatorAdd;
    
    public class AddFactory implements IOperatorFactory {
    
        @Override
        public AbstractOperator CreateOperation() {
            // TODO Auto-generated method stub
            return new OperatorAdd();
        }
    
    }
    package com.jayfulmath.designpattern.factory;
    
    import com.jayfulmath.designpattern.samplefactory.operator.AbstractOperator;
    import com.jayfulmath.designpattern.samplefactory.operator.OperatorPlus;
    
    public class PlusFactory implements IOperatorFactory {
    
        @Override
        public AbstractOperator CreateOperation() {
            // TODO Auto-generated method stub
            return new OperatorPlus();
        }
    
    }

    main:

    package com.jayfulmath.designpattern.factory;
    
    import com.jayfulmath.designpattern.main.BasicExample;
    import com.jayfulmath.designpattern.samplefactory.operator.AbstractOperator;
    
    public class FactoryMain extends BasicExample {
    
        @Override
        public void startDemo() {
            // TODO Auto-generated method stub
            IOperatorFactory addFactory = new AddFactory();
            AbstractOperator addOperation = addFactory.CreateOperation();
            addOperation.NumberA = 1;
            addOperation.NumberB = 2;
            System.out.println("[FactoryMain]"+addOperation.NumberA+" add "+addOperation.NumberB+" = "+addOperation.GetResult());    
        }
    
    }

    工厂接口生成操作基类。

  • 相关阅读:
    flexgrid的应用
    Flexigrid例子二: 原位编辑器
    JQuery 插件FlexiGrid 之完全配置与使用
    linux 配置环境变量不生效
    redis主从和哨兵搭建
    linux 清楚buff
    linux时间ESC修改为CST格式
    mysql-5.7.26 版本,表不区分区分大小写问题
    CDH-mysql 开启关闭 gtid
    mysql-5.7.26 安装已经 主从同步复制
  • 原文地址:https://www.cnblogs.com/deman/p/4123250.html
Copyright © 2011-2022 走看看