1. 程式人生 > >常用軟體設計模式(三)工廠方法模式

常用軟體設計模式(三)工廠方法模式

工廠方法模式:定義一個用於建立物件的介面,讓其子類決定例項化哪一個工廠類,工廠模式使其建立過程延遲到子類進行。

優點:1、一個呼叫者想建立一個物件,只要知道其名稱就可以了

           2、擴充套件性高,如果想增加一個產品,只要擴充套件一個工廠類就可以

           3、遮蔽產品的具體實現,克服了簡單工廠所違背的開閉原則的缺點,又保持了封裝物件建立過程的優點

缺點:每次增加一個產品時,都需要增加一個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。

作為一種建立類模式,在任何需要生成複雜物件的地方,都可以使用工廠方法模式。複雜物件適合使用工廠模式,而簡單物件,特別是只需要通過 new 就可以完成建立的物件,無需使用工廠模式。

class Fruit//水果類
{
   public void AA()
   {
       Console.WriteLine("涼拌");
   }

   public void BB()
   {
       Console.WriteLine("清蒸");
   }

    public void CC()
    {
       Console.WriteLine("爆炒");
    }
}


class Apple: Fruit//蘋果類,繼承水果類
{ }


class Banana:Fruit//香蕉類,繼承水果類
{ }


interface IFactory        //水果工廠介面
{
    Fruit CreateFruit();
}

class AppleFactory : IFactory   //蘋果工廠
{
        public Fruit CreateFruit()
        {
            return new Apple();
        }
}


class BananaFactory : IFactory     //香蕉工廠
{
    public Fruit CreateFruit()
    {
        return new Banana();
    }
}


    class Program
    {
        static void Main(string[] args)
        {
            IFactory factory = new AppleFactory();
            Fruit fruit = factory.CreateFruit();

            fruit.AA();
            fruit.BB();
        }
    }