比如我們寫一個加減乘除的計算類,按正常來寫的話一定是
public Class Operation
{
public Add(int a, int b);
public Sub(int a, int b);
public Mul(int a, int b);
public Dev(int a, int b);
}
或者是
public Class Operation
{
public double Caculate(double a, double, String caculate)
{
switch(caculate)
{
case:"+"
return a+b;
...
...
}
}
}
直接實例化Operation就直接用了,或者有爲了方便的直接把方法寫成static的。
雖然這樣寫已經可以了,但是問題來了,如何讓計算器知道我是想用哪一個方法呢?
簡單工廠模式
我們應該考慮用一個單獨的類來做這個創造實例的過程,這就是工廠。
public class OperationFactory
{
public static Operation CreateOperate(String Operation)
{
Operation operation = null;
switch (operation)
{
case "+":
operation = new OperationAdd();
break;
case "-":
operation = new OperationSub();
break;
case "*":
operation = new OperationMul();
break;
case "/":
operation = new OperationDiv();
break;
}
return operation;
}
}
現在只需要輸入運算符號,工廠就能實例化出合適的對象。
客戶端代碼
Operation operation;
opeartion = OperationFactory.createOperate("+");
operation.NumberA = 1;
operation.NumberB = 2;
double result = operation.GetResult();
優點:
根據外界給定的信息,決定究竟應該創建哪個具體類的對象。
缺點:
高內聚,所有創建邏輯集中到工廠類。