設計模式:
工廠方法模式(Factory Method Pattern)
介紹:簡單工廠模式是要在工廠類中通過數據來做個決策,在工廠類中的多個類中實例化出來其中一個要用到的類,做運算。而工廠方法模式則是他的一個的擴展,不在工廠類中做區分從而創建對應的類,而是把這個選擇決策權力交給使用類的用戶決定。可擴展性比簡單工廠模式要好很多
工廠方法模式類圖:
工廠方法模式C#代碼舉例:
MobilePhone類手機類
1 public abstract class MobilePhone 2 { 3 public abstract void print(); 4 }
Iphone 類 蘋果手機類
1 public class Iphone : MobilePhone 2 { 3 public override void print() 4 { 5 Console.WriteLine("我是蘋果手機!"); 6 } 7 }
XiaoMI 類 小米手機類
1 public class XiaoMI:MobilePhone 2 { 3 public override void print() 4 { 5 Console.WriteLine("我是小米手機"); 6 } 7 }
SmarTisan類 錘子手機類
1 public class SmarTisan : MobilePhone 2 { 3 public override void print() 4 { 5 Console.WriteLine("我是錘子手機!"); 6 } 7 }
MobilePhoneFactory 類 手機工廠類
1 public abstract class MobilePhoneFactory 2 { 3 public abstract MobilePhone Create(); 4 }
IphoneFactory 類 蘋果手機工廠類
1 public class IphoneFactory:MobilePhoneFactory 2 { 3 public override MobilePhone Create() 4 { 5 return new Iphone(); 6 } 7 }
XiaoMiFactory類 小米手機工廠類
1 public class XiaoMiFactory:MobilePhoneFactory 2 { 3 public override MobilePhone Create() 4 { 5 return new XiaoMI(); 6 } 7 }
SmarTisanFactory類 錘子手機工廠類
1 public class SmarTisanFactory:MobilePhoneFactory 2 { 3 public override MobilePhone Create() 4 { 5 return new SmarTisan(); 6 } 7 }
測試
(即使每次增加新的品牌,只需要增加新品牌的類,以及對應工廠即可使用,方便擴展)
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //創建蘋果手機工廠 6 MobilePhoneFactory mobilePhoneFactoryIphone = new IphoneFactory(); 7 //蘋果手機工廠創建手機 8 MobilePhone mobilePhoneIphone = mobilePhoneFactoryIphone.Create(); 9 //由蘋果工廠創建蘋果手機 10 mobilePhoneIphone.print(); 11 12 13 //小米工廠生產小米手機 14 MobilePhoneFactory mobilePhoneFactoryXiaoMi = new XiaoMiFactory(); 15 MobilePhone mobilePhoneXiaoMi = mobilePhoneFactoryXiaoMi.Create(); 16 mobilePhoneXiaoMi.print(); 17 18 19 //錘子手機工廠生產錘子手機 20 MobilePhoneFactory mobilePhoneFactorySmarTisan = new SmarTisanFactory(); 21 MobilePhone mobilePhoneSmarTisan = mobilePhoneFactorySmarTisan.Create(); 22 mobilePhoneSmarTisan.print(); 23 24 Console.Read(); 25 26 } 27 }
運行結果:
源碼工程文件