設計模式之-簡單工廠設計模式
我們來看一下簡單工廠設計模式,在這裡我就拿控制檯應用做演示了,來做一個加減乘除的操作,本來是要用窗體的,但因為窗體程式的工具箱怎麼也找不到了,很煩
在這個專案中我們共需要 操作類(Operaction),工廠類(factory),加法類(Add),呼叫(Program),呼叫就在Program中呼叫了。
建立好控制檯程式後我們來建立一個操作類(Operaction),程式碼如下
public class Operaction { public int Num1 { get; set; } public int Num2 { get; set; } public virtual int GetResult() { return 0; } }
定義了兩個int型別的屬性一個是 Num1和Num2,然後又定了一個虛方法,方法就是用來做計算的,因為我們不知道它要執行那個操作想要什麼結果,所以我們來定義虛方法,讓其他的類去實現方法。
然後我們建立加法類(Add),程式碼如下
public class Add:Operaction { public override int GetResult() {int result = 0; result = Num1 + Num2; return result; } }
Add類繼承了Operaction,那就擁有了Operaction的方法和屬性,我們只需要override重寫GetResult方法即可,然後執行加法操作,至於怎麼寫程式碼,就看自己了
然後我們建立工廠類
public static class Factory { public static Operaction Open(string opac) { Operaction o= null; switch (opac) { case "+": o=new Add(); break; default: break; } return o; } }
為了方便呼叫我們把它改成static靜態的類,方法也是靜態的方法。注意這裡:
public static Operaction Open(string opac)
我們返回的是一個物件 操作類(Operaction),既然要返回Operaction,那就要先new一個Operaction,但是我們不知道它要進行一個什麼操作,所以先new一個空的,引數傳過來一個字串,然後使用switch進行判斷,如果是 “+” 就new一個Add的類,Add類中重寫了計算方法(GetResult),所以這執行的就是加法計算,因為Add這個類已經繼承了Operaction所以是可以這麼做的,裡式替換原則,也不多說了。然後我們return返回;工廠類就完成了。
然後就是呼叫了,在Program中呼叫
static void Main(string[] args) { Operaction op = Factory.Open("+"); op.Num1 = 5; op.Num2 = 3; Console.WriteLine(op.GetResult()); }
Main方法中有看這段程式碼:
Operaction op = Factory.Open("+");
在呼叫的時候傳入引數 “+” 在工廠模式的switch中就會判斷,new一個Add(加法類)給你,加法類中又重寫了計算的操作,最終結果也就出來了。
同樣,減法,乘法,除法也是如此。 工廠模式也可以做很多的事情,在這裡只是舉了一個小例子而已