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

    工厂接口生成操作基类。

  • 相关阅读:
    webFlux&Reactor
    Docker镜像使用
    Docker的使用
    Docker的容器使用
    为什么样本方差除以(n-1)而不是n ?(自由度)
    机器学习(一)—— 线性回归
    线性、逻辑回归的java实现
    整合多个网络的拓扑结构并降维(Mashup)
    KS检验统计量的扩展应用(CMap)
    p-value
  • 原文地址:https://www.cnblogs.com/deman/p/4123250.html
Copyright © 2011-2022 走看看