1. 程式人生 > >設計模式之-簡單工廠設計模式

設計模式之-簡單工廠設計模式

我們來看一下簡單工廠設計模式,在這裡我就拿控制檯應用做演示了,來做一個加減乘除的操作,本來是要用窗體的,但因為窗體程式的工具箱怎麼也找不到了,很煩

在這個專案中我們共需要 操作類(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(加法類)給你,加法類中又重寫了計算的操作,最終結果也就出來了。

同樣,減法,乘法,除法也是如此。 工廠模式也可以做很多的事情,在這裡只是舉了一個小例子而已