在簡(jiǎn)單工廠模式中蕉毯,我們提到簡(jiǎn)單工廠模式中杜秸,客戶端需要知道兩個(gè)類Operation
和OperationFactory
埋泵,其實(shí)可以運(yùn)用策略模式將其封裝起來:
class OperationContext
{
private Operation oper = null;
public OperationContext(double num1_, double num2_, string type)
{
switch (type)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
}
oper.Num1 = num1_;
oper.Num2 = num2_;
}
public double GetResult()
{
return this.oper.GetResult();
}
}
現(xiàn)在使用策略模式進(jìn)行改進(jìn)砂竖,運(yùn)算時(shí)是這樣的:
OperationContext ct = new OperationContext(num1, num2, strOper);
Console.WriteLine(Convert.ToString(ct.GetResult()));
只需要知道OperationContext
即可遂蛀。相比而言谭跨,簡(jiǎn)單工廠只是返回了Operation
這樣的一個(gè)產(chǎn)品,而策略模型則將不同的運(yùn)算看成不同的策略李滴,有相同的輸入輸出格式螃宙,只是中間的算法不同而已,將不同的部分交由子類去實(shí)現(xiàn)