什么是简单工厂模式?
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
通过计算器的案例来理解简单工厂模式
工厂类
public class OperationFactory {
public static Operation creaOperation(String operation){
Operation oper = null;
switch (operation){
case "+":
oper = new Add();
break;
case "-":
oper = new Sub();
break;
case "*":
oper = new Mul();
break;
case "/":
oper = new Div();
break;
}
return oper;
}
public static void main(String[] args) {
Operation opr = OperationFactory.creaOperation("*");
double result = opr.getResult(100, 200);
System.out.println("result is " + result);
}
}
操作类:
public abstract class Operation {
public double getResult(double numberA,double numberB)
{
return 0d;
}
}
子类:
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){
System.out.println("除数不能为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 super.getResult(numberA, numberB);
}
}
定义一个工厂类来创建对象,把创建对象的过程交给工厂类来创建不同的对象,使之更加解耦,工厂类中的相关的操作的子类可以互补影响。