1. 程式人生 > 其它 >C# 簡單工廠模式

C# 簡單工廠模式

概念:專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有"共同的父類"。它又稱為靜態工廠方法模式,屬於類的建立型模式。

簡單工廠模式的實質是由一個工廠類根據傳入的"引數",動態決定應該建立哪一個產品類(這些產品類繼承自一個父類或介面)的例項。

貼程式碼 在main方法中實現的方法

            FoodS food1 = FoodSimpleFactory.CreateFood("西紅柿炒蛋");
            food1.Print();

            FoodS food2 = FoodSimpleFactory.CreateFood("土豆肉絲");
            food2.Print();
            Console.Read();

新增一個類 主要程式碼是用來實現


  public abstract class FoodS
    {
        // 輸出點了什麼菜   抽象類
        public abstract void Print();
    }


    /// <summary>
    /// 西紅柿炒雞蛋這道菜
    /// </summary>
    public class TomatoScrambledEggsS : FoodS
    {
        //重寫print
        public override void Print()
        {
            Console.WriteLine("一份西紅柿炒蛋!");
        }

    }



    /// <summary>
    /// 土豆肉絲這道菜
    /// </summary>
    public class ShreddedPorkWithPotatoesS : FoodS
    {
        public override void Print()
        {
            Console.WriteLine("一份土豆肉絲");
        }
    }


    /// <summary>
    /// 簡單工廠類, 負責 炒菜  只要傳過來型別 然後自行實現
    /// </summary>
    public class FoodSimpleFactory
    {
        public static FoodS CreateFood(string type)
        {

            FoodS food = null;
            if (type.Equals("土豆肉絲"))
            {
                //由引數決定 要實現的繼承父類列印的子類方法
                food = new ShreddedPorkWithPotatoesS();
            }
            else if (type.Equals("西紅柿炒蛋"))
            {
                food = new TomatoScrambledEggsS();
            }
            return food;

        }

結論:可以看出我們執行方法時,直接傳入自定義的“型別”也就是程式碼中的“西紅柿炒蛋”或者“土豆肉絲”,然後具體中間方法FoodSimpleFactory.CreateFood 根據“型別”判定具體執行的方法內容 。該方法內容全部整合一個抽象類FoodS ,多個方法全部重寫實現該類的Print方法。

優點:我們需要增加型別時 直接增加實現方法 不需要修改底層介面邏輯

缺點:當系統中的具體產品類不斷增多時,可能會出現要求工廠類也要做相應的修改,擴充套件性並不很好。