1、定義
用一個單獨的類來做這個創造實例的過程,這就是工廠。
2、使用場景
加減乘除運算封裝
3、代碼結構UML圖
簡單工廠類:實例工廠類;
運算類:運算操作抽象類;
加、減、乘、除法類:具體的運算類。
4、類的實現
(1)、Operation(運算抽象類)
public class Operation {
private double numberA = 0;
private double numberB = 0;
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 double getResult() {
double result = 0;
return result;
}
}
(2)、OperationFactory(工廠類)
public class OperationFactory {
public static Operation createOperate(String operate) {
Operation operation = null;
switch (operate) {
case "+":
operation = new OperationAdd();
break;
case "-":
operation = new OperationSub();
break;
case "*":
operation = new OperationMul();
break;
case "/":
operation = new OperationDiv();
break;
default:
break;
}
return operation;
}
}
(3)、OperationAdd、OperationSub、OperationMul、OperationDiv(具體運算類)
public class OperationAdd extends Operation {
@Override
public double getResult() {
double result = 0;
result = getNumberA() + getNumberB();
return result;
}
}
public class OperationSub extends Operation {
@Override
public double getResult() {
double result = 0;
result = getNumberA() - getNumberB();
return result;
}
}
public class OperationMul extends Operation {
@Override
public double getResult() {
double result = 0;
result = getNumberA() * getNumberB();
return result;
}
}
public class OperationDiv extends Operation {
@Override
public double getResult() {
double result = getNumberA() / getNumberB();
return result;
}
}
5、客戶端調用
public static void main(String[] args) {
Operation oper = OperationFactory.createOperate("+");
oper.setNumberA(1);
oper.setNumberB(1);
double result = oper.getResult();
System.out.println("輸出結果:" + result);
}
輸出:
6、總結
工廠模式比較簡單,主要是實例集中創建,採用靜態方法調用。
參考:《大話設計模式》