简单工厂模式

来源:互联网 发布:java调用odata 编辑:程序博客网 时间:2024/06/14 04:37

简单工厂模式

定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。(摘自百度)

本质:简单工厂模式的实质是由一个工厂类根据传入参数,动态决定应该创建哪个产品类(产品类都继承自一个父类或接口的实例)

简单工厂UML类图:这里写图片描述

代码实现:

注:产品类只写了加法、减法,添加产品类都是继承Operation类,重写GetResult()方法

运算类:

/** * Created by WFP on 2017/8/10. */public class Operation {    private double A = 0;    private double B = 0;    public double getA() {        return A;    }    public void setA(double a) {        A = a;    }    public double getB() {        return B;    }    public void setB(double b) {        B = b;    }    /**     * 取得返回值     * @return     */    public double GetResult(){        double result = 0;        return result;    }}

加法运算类:

/** * 加法运算类 * Created by WFP on 2017/8/10. */public class OperationAdd extends Operation {    @Override    public double GetResult() {        double result =0;        result = super.getA() + super.getB();        return result;    }}

减法运算类:

/** * 减法运算类 * Created by WFP on 2017/8/10. */public class OperationSub extends Operation {    public double GetResult (){        double result = 0;        result = super.getA() - super.getB();        return result;    }}

简单工厂类:

/** * 简单工厂 * Created by WFP on 2017/8/10. */public class OperationFactory {    public static Operation creatOperation(String operation){        Operation oper = null;        switch (operation){            case "+":                oper = new OperationAdd();                break;            case "-":                oper = new OperationSub();                break;        }        return oper;    }}

Test类

/** * @Author: WFP * @Time: 2017/8/11 * simpleFactoryMaven */public class factoryTest {    @Test    public void fun() {        //减法        Operation oper1;        oper1 = OperationFactory.creatOperation("-");        oper1.setA(8.8);        oper1.setB(3.0);        Double result1 = oper1.GetResult();        System.out.println(result1);        //加法        Operation oper2;        oper2 = OperationFactory.creatOperation("+");        oper2.setA(5);        oper2.setB(4);        Double result2 = oper2.GetResult();        System.out.println(result2);    }}

理解:简单工厂模式只要由工厂类传入参数,工厂就实例出合适的对象,通过多态返回父类的方式实现了计算器的结果。

原创粉丝点击