版权声明: https://blog.csdn.net/if_i_were_a/article/details/83003087
简单工厂模式:
用一个单独的类来做创造实例的过程。例如加减乘除运算,可以将这些类抽象成一个基类,然后继承,实现自己的功能,如果有其他的类要创建,只需要新建一个类,在创造实例的类中加一种情况。
类图:
选自《大话设计模式》
public abstract class Operation {
private double numberA;
private double numberB;
public double getNumberA() {
return numberA;
}
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public double getNumberB() {
return numberB;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
public abstract double getResult();
}
public class OperationAdd extends Operation {
@Override
public double getResult() {
return this.getNumberA()+this.getNumberB();
}
}
public class OperationFactory {
public static Operation createOperation(String operate) {
Operation oper = null;
switch (operate) {
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
default:
break;
}
return oper;
}
}
public class Client {
public static void main(String[] args) {
Operation oper= OperationFactory.createOperation("/");
oper.setNumberA(5);
oper.setNumberB(6);
System.out.println(oper.getResult());
}
}
总结:简单工厂模式的最大优点在与工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是简单工厂模式违背了开放—封闭原则。增加一个类的时候,需要去改变创造实例的类