一、介绍
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
二、示例
实现一个计算程序,给定两个数字,返回结果
public abstract class Operation { public abstract double getResult(double numberA,double numberB); } public class Add extends Operation{ @Override public double getResult(double numberA, double numberB) { return numberA+numberB; } } public class Div extends Operation{ @Override public double getResult(double numberA, double numberB) { if (numberB==0) { throw new ArithmeticException(); } return numberA/numberB; } } public class Mul extends Operation{ @Override public double getResult(double numberA, double numberB) { return numberA*numberB; } } public class Sub extends Operation{ @Override public double getResult(double numberA, double numberB) { return numberA-numberB; } }
工厂类
public class OperationFactory { public static Operation createOperate(String operate) { Operation oper = null; switch (operate) { case "+": oper = new Add(); break; case "-": oper = new Sub(); break; case "*": oper = new Mul(); break; case "/": oper = new Div(); break; } return oper; } }
测试
/** * 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式, * 但不属于23种GOF设计模式之一。 * 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 * 简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 */ public class SimpleFactoryTest { public static void main(String[] args) { Operation operate = OperationFactory.createOperate("+"); System.out.println(operate.getResult(10, 20)); operate = OperationFactory.createOperate("-"); System.out.println(operate.getResult(10, 20)); operate = OperationFactory.createOperate("*"); System.out.println(operate.getResult(10, 20)); operate = OperationFactory.createOperate("/"); System.out.println(operate.getResult(10, 20)); } }
30.0 -10.0 200.0 0.5