使用簡單工廠模式封裝對象的創建過程。這裏以加減乘除計算爲例。
代碼
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的開閉原則。