簡單工廠模式

理論摘自這裏:http://www.cnblogs.com/zzh/archive/2007/08/03/841504.html

簡單工廠模式是類的創建模式,又叫做靜態工廠方法模式。就是由一個工廠類根據傳入的參量決定創建出哪一種產品類的實例。一般涉及到三種角色: 

工廠類:擔任這個角色的是工廠方法模式的核心,含有與應用緊密相關的商業邏輯。工廠類在客戶端的直接調用下創建產品對象,它往往由一個具體的類實現。 
抽象產品角色:擔任這個角色的類是由工廠方法模式所創建的對象的父類,或她們共同擁有的接口。一般由接口或抽象類實現。 
具體產品角色:工廠方法模式所創建的任何對 
象都是這個角色的實例,由具體類實現。 

 

廣告位: 菜鳥成長羣  45406906   討論學習經驗與技術爲主 不求技術好 但求素質高的同學加入

 

 

簡單工廠模式優缺點: 
模式的核心是工廠類,這個類負責產品的創建,而客戶端可以免去產品創建的責任,這實現了責任的分割。但由於工廠類集中了所有產品創建邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果增加新產品必須修改工廠角色的源碼。 (根據貓的理解 應該是違反了開閉原則吧...)

代碼:

Code:
  1. /// <summary>  
  2.    /// 產品的抽象接口  
  3.    /// </summary>  
  4.    public interface Food  
  5.    {   
  6.        /// <summary>  
  7.        /// 獲得相應的食物  
  8.        /// </summary>  
  9.        void Get();  
  10.    }  
  11.   
  12.   
  13.    /// <summary>  
  14.    /// 麥香雞對抽象產品接口的實現  
  15.    /// </summary>  
  16.    public class McChicken : Food  
  17.    {  
  18.        /// <summary>  
  19.        /// 獲得一份麥香雞  
  20.        /// </summary>  
  21.        public void Get()  
  22.        {  
  23.            Console.WriteLine("我要一份麥香雞!");  
  24.        }  
  25.    }  
  26.   
  27.   
  28.    /// <summary>  
  29.    /// 薯條對抽象產品接品的實現  
  30.    /// </summary>  
  31.    public class Chips : Food  
  32.    {  
  33.        /// <summary>  
  34.        /// 獲取一份薯條  
  35.        /// </summary>  
  36.        public void Get()  
  37.        {  
  38.            Console.WriteLine("我要一份薯條!");  
  39.        }  
  40.    }  
  41.   
  42.   
  43.    /// <summary>  
  44.    /// 食物加工工廠  
  45.    /// </summary>  
  46.    public class FoodFactory  
  47.    {  
  48.        public static Food getFood(string type)  
  49.        {  
  50.            if (type.Equals("mcchicken",StringComparison.OrdinalIgnoreCase))  
  51.            {  
  52.                return new McChicken();  
  53.            }  
  54.            else if (type.Equals("chips", StringComparison.OrdinalIgnoreCase))  
  55.            {  
  56.                return new Chips();  
  57.            }  
  58.            else  
  59.            {  
  60.                Console.WriteLine("哎呀!找不到!");  
  61.                return null;  
  62.            }  
  63.   
  64.        }  
  65.   
  66.   
  67.   
  68.        class Program  
  69.        {  
  70.            static int Main()  
  71.            {  
  72.                Food mcChicken = FoodFactory.getFood("mcchicken");  
  73.                Food chips = FoodFactory.getFood("chips");  
  74.                Food eggs = FoodFactory.getFood("Eggs");  
  75.   
  76.                if (mcChicken != null)  
  77.                {  
  78.                    mcChicken.Get();  
  79.                }  
  80.                if (chips != null)  
  81.                {  
  82.                    chips.Get();  
  83.                }  
  84.                if (eggs != null)  
  85.                {  
  86.                    eggs.Get();  
  87.                }  
  88.                Console.ReadKey();  
  89.                return 0;  
  90.            }  
  91.        }  

 

發佈了52 篇原創文章 · 獲贊 15 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章