理論摘自這裏:http://www.cnblogs.com/zzh/archive/2007/08/03/841504.html
簡單工廠模式是類的創建模式,又叫做靜態工廠方法模式。就是由一個工廠類根據傳入的參量決定創建出哪一種產品類的實例。一般涉及到三種角色:
工廠類:擔任這個角色的是工廠方法模式的核心,含有與應用緊密相關的商業邏輯。工廠類在客戶端的直接調用下創建產品對象,它往往由一個具體的類實現。
抽象產品角色:擔任這個角色的類是由工廠方法模式所創建的對象的父類,或她們共同擁有的接口。一般由接口或抽象類實現。
具體產品角色:工廠方法模式所創建的任何對
象都是這個角色的實例,由具體類實現。
廣告位: 菜鳥成長羣 45406906 討論學習經驗與技術爲主 不求技術好 但求素質高的同學加入
簡單工廠模式優缺點:
模式的核心是工廠類,這個類負責產品的創建,而客戶端可以免去產品創建的責任,這實現了責任的分割。但由於工廠類集中了所有產品創建邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果增加新產品必須修改工廠角色的源碼。 (根據貓的理解 應該是違反了開閉原則吧...)
代碼:
- /// <summary>
- /// 產品的抽象接口
- /// </summary>
- public interface Food
- {
- /// <summary>
- /// 獲得相應的食物
- /// </summary>
- void Get();
- }
- /// <summary>
- /// 麥香雞對抽象產品接口的實現
- /// </summary>
- public class McChicken : Food
- {
- /// <summary>
- /// 獲得一份麥香雞
- /// </summary>
- public void Get()
- {
- Console.WriteLine("我要一份麥香雞!");
- }
- }
- /// <summary>
- /// 薯條對抽象產品接品的實現
- /// </summary>
- public class Chips : Food
- {
- /// <summary>
- /// 獲取一份薯條
- /// </summary>
- public void Get()
- {
- Console.WriteLine("我要一份薯條!");
- }
- }
- /// <summary>
- /// 食物加工工廠
- /// </summary>
- public class FoodFactory
- {
- public static Food getFood(string type)
- {
- if (type.Equals("mcchicken",StringComparison.OrdinalIgnoreCase))
- {
- return new McChicken();
- }
- else if (type.Equals("chips", StringComparison.OrdinalIgnoreCase))
- {
- return new Chips();
- }
- else
- {
- Console.WriteLine("哎呀!找不到!");
- return null;
- }
- }
- class Program
- {
- static int Main()
- {
- Food mcChicken = FoodFactory.getFood("mcchicken");
- Food chips = FoodFactory.getFood("chips");
- Food eggs = FoodFactory.getFood("Eggs");
- if (mcChicken != null)
- {
- mcChicken.Get();
- }
- if (chips != null)
- {
- chips.Get();
- }
- if (eggs != null)
- {
- eggs.Get();
- }
- Console.ReadKey();
- return 0;
- }
- }