使用設計模式必須首先要理解對象、繼承和接口,一般情況下我們創建對象時采用new的方式,這和程序如何創建對象有關。再進一步思考,很多時候根據程序的需求不同我們要創建對象,因而我們可以將創建過程抽象成一個專門的類中,這樣程序就會更靈活,更通用。
我們可以利用一個共同的基類以完全通用的方式與這些提供程序相關的對象交互。工廠模式裡提供了一個簡單的決策類,它根據提供的數據返回基類中的多個子類的一個。
1. 簡單工廠模式:它的運行一般是根據提供的數據,返回已定義的幾個類中的一個類中的實例。通常它返回的類中都有一個共同的父類和方法,但在每個子類中,該方法的所要執行的任務是不同的,而且根據不同的數據進行了優化。下面是示意圖
示例代碼,這是一個計算器的范例
[csharp]
public class Operation
{
public double NumberA { get; set; }
public double NumberB { get; set; }
public virtual double GetResult()
{
double result = 0;
return result;
}
}
public class OperationAdd : Operation
{
public override double GetResult()
{
double result = NumberA + NumberB;
return result;
}
}
public class OperationSub : Operation
{
public override double GetResult()
{
double result = NumberA - NumberB;
return result;
}
}
public class OPerationMulti : Operation
{
public override double GetResult()
{
double result = NumberA * NumberB;
return result;
}
}
public class OperationDiv : Operation
{
public override double GetResult()
{
double result = NumberA / NumberB;
return result;
}
}
創建簡單工廠
[csharp]
public static Operation Creatoperation(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OPerationMulti();
break;
case "/":
oper = new OperationDiv();
break;
default:
break;
}
return oper;
}
調用簡單工廠
[csharp]
Operation oper = new Operation();
oper=SimpleFactory01.Creatoperation("/");
oper.NumberA = 10;
oper.NumberB = 20;
Console.WriteLine(oper.GetResult());
Console.ReadLine();