简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。经常被使用
1. 类图:
2. 代码示例:
定义操作符父类
public abstract class Operation {
protected double numberA;
protected double numberB;
public abstract double getResult();
}
加法运算:
public class OperationAdd extends Operation {
@Override
public double getResult() {
return numberA + numberB;
}
}
减法运算:
public class OperationSub extends Operation {
@Override
public double getResult() {
return numberA - numberB;
}
}
运算简单工厂:
public class OperationFactory {
public static Operation getOperation(String operate) {
Operation oper = null;
switch (operate) {
case "+" :
oper = new OperationAdd();
break;
case "-" :
oper = new OperationSub();
break;
}
return oper;
}
}
客户端调用:
public class Client {
public static void main(String[] args) {
Operation oper = OperationFactory.getOperation("+");
oper.numberA = 4;
oper.numberB = 1;
System.out.println(oper.getResult());
oper = OperationFactory.getOperation("-");
oper.numberA = 6;
oper.numberB = 1;
System.out.println(oper.getResult());
}
}
3. 简单工厂优点:
工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
4. 简单工厂的不足:
当需要增加新产品时,需要修改工厂方法,违背了开放-封闭原则。