1.定义
简单工厂模式:工厂负责按照需求生产出指定的产品供客户使用。
以实现加减乘除功能的计算器的实例,来看一下简单工厂模式 要怎么操作的。
2.UML图:
3.Code
Operation.class:
abstract class Operation{
public double numberA;
public double numberB;
abstract double getResult();
}
子类:
OperationAdd.class:
class OperationAdd extends Operation{
public double getResult{
return numerA + numberB;
}
}
OperationSub.class:
class OperationSub extends Operation{
public double getResult{
return numerA - numberB;
}
}
OperationMul.class:
class OperationMul extends Operation{
public double getResult{
return numerA * numberB;
}
}
OperationDiv.class:
class OperationDiv extends Operation{
public double getResult{
if(numberB == 0){
throw new Exception("除数不能为0");
}else{
return numerA / numberB;
}
}
}
OperationFactory.class:
class OperationFactory{
public static Operation createOperation(String operator,String numberA,String numberB){
Operation operation = null;
switch(operator){
case "+":
operation = new OperationAdd();
break;
case "-":
operation = new OperationSub();
break;
case "*":
operation = new OperationMul();
break;
case "/":
operation = new OperationDiv();
break;
}
operation.numberA = numberA;
operation.numberB = numberB;
}
}
Client.class
public class Client{
public static void main(String[] args){
Operation operation = OperationFactory.create("+",2,4);
double result = operation.getResult();
}
}
4.总结
简单工厂模式是基于面向对象的三大特性:
- 封装:将计算过程封装到计算类Operation中
- 继承:通过一个公共父类定义计算方法,子类继承父类实现各自的计算方法,并且能够共享父类中的参数numberA和numberB
- 多态:四个计算类在Client中可以引用共同的父类Operation,通过操作符表现出不同的特性。
简单工厂模式通过工厂封装具体实现,客户端只要传入条件,即可在工厂内部生成不同的对象,并且这些对象有共同的父类,抽象父类定义了公共的行为。