C#設計模式--工廠方法模式


0.C#設計模式-簡單工廠模式

設計模式:

工廠方法模式(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     }

運行結果:

 

源碼工程文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM