我們來看一下簡單工廠設計模式,在這裡我就拿控制台應用做演示了,來做一個加減乘除的操作,本來是要用窗體的,但因為窗體程式的工具箱怎麼也找不到了,很煩 在這個項目中我們共需要 操作類(Operaction),工廠類(factory),加法類(Add),調用(Program),調用就在Program中調用 ...
我們來看一下簡單工廠設計模式,在這裡我就拿控制台應用做演示了,來做一個加減乘除的操作.
在這個項目中我們共需要 操作類(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(加法類)給你,加法類中又重寫了計算的操作,最終結果也就出來了。
同樣,減法,乘法,除法也是如此。 工廠模式也可以做很多的事情,在這裡只是舉了一個小例子而已