使用简单工厂模式封装对象的创建过程。这里以加减乘除计算为例。
代码
Operation运算类
父类
package simple.service;
public abstract class Operation {
protected double numberA;
protected double numberB;
public abstract double getResult();
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
}
public class OperationAdd extends Operation {
public double getResult() {
return this.numberA+this.numberB;
}
}
public class OperationDiv extends Operation {
public double getResult() {
return this.numberA/this.numberB;
}
}
public class OperationMul extends Operation {
public double getResult() {
return this.numberA * this.numberB;
}
}
public class OperationSub extends Operation {
public double getResult() {
return this.numberA-this.numberB;
}
}
工厂类
使用工厂类创建对象
public class OperatorFactory {
public static Operation createOperate(String operateStr){
Operation operation = null;
switch (operateStr)
{
case "+": {
operation = new OperationAdd();
break;
}
case "-": {
operation = new OperationSub();
break;
}
case "*": {
operation = new OperationMul();
break;
}
case "/": {
operation = new OperationDiv();
break;
}
}
return operation;
}
}
客户端
public class Client {
public static void main(String[] args) {
Operation operation = OperatorFactory.createOperate("+");
operation.setNumberA(1.0);
operation.setNumberB(4.0);
System.out.println(operation.getResult());
}
}
特点
简单工厂模式可以屏蔽实现过程。但是如果需要扩展运算类的话,需要修改工厂类。这不符合OOP的开闭原则。