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());    
        }
    
    }

    工厂接口生成操作基类。

  • 相关阅读:
    file_zilla 通过key连接远程服务器
    git 恢复丢失的文件
    花括号中的json数据--->转为数组array
    3种日志类型,微信付款反馈-->写入txt日志
    清空数据库中所有表--连表删除
    冒泡排序, 使用最低票价.---双重循环,一重移动次数.二重移动
    navicat 连接远程mysql
    付款前.检查状态.防止重复付款,需要ajax设置为同步,等待ajax返回结果再使用
    反射
    设计模式六大原则
  • 原文地址:https://www.cnblogs.com/deman/p/4123250.html
Copyright © 2011-2022 走看看