中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

說說設計模式(shi)~簡單工(gong)廠(chang)模式(shi)(Factory)

返回目錄  

 簡單工廠模式Simple Factory根據提供給它(ta)的(de)(de)數據,返回一個類(lei)(lei)的(de)(de)實例。通常它(ta)返回的(de)(de)類(lei)(lei)都有(you)一個公共(gong)的(de)(de)父類(lei)(lei)(或(huo)者(zhe)接口對象)。

簡單工廠的作用是實例化對象,而不需要客戶了解這個對象屬于哪個具體的子類。簡單工廠實例化的類具有相同的接口或者基類,在子類比較固定并不需要擴展時,可以使用簡單工廠。如數據庫生產工廠就是簡單工廠的一個應用。
         采(cai)用(yong)簡單(dan)工廠的(de)優點(dian)是可(ke)以使用(yong)戶根據參(can)數獲得(de)對(dui)應的(de)類(lei)(lei)實例(li),避免了直接實例(li)化(hua)類(lei)(lei),降(jiang)低了耦(ou)合(he)性;缺點(dian)是可(ke)實例(li)化(hua)的(de)類(lei)(lei)型(xing)在編譯(yi)期間(jian)已經被確定,如果增(zeng)加新類(lei)(lei) 型(xing),則(ze)需(xu)要修(xiu)改工廠,不符合(he)OCP(開(kai)閉原則(ze))的(de)原則(ze)。簡單(dan)工廠需(xu)要知道(dao)所有要生成(cheng)的(de)類(lei)(lei)型(xing),當(dang)子(zi)類(lei)(lei)過多或者子(zi)類(lei)(lei)層次(ci)過多時不適合(he)使用(yong)。

下面是(shi)我實例中的類結構圖,它有(you)一個ICreate的公共(gong)接口(kou),有(you)一個方(fang)法叫Create,返回(hui)值為Void

其中公用的接口(kou)代碼如下(xia):(最后(hou)工廠的返回(hui)值類型)

1    /// <summary>
2         /// 簡(jian)單工廠接(jie)口(kou),返回值類型
3         /// </summary>
4         public interface ICreate
5         {
6             void Create();
7         }

而下面,分別用people和animal兩個(ge)類去(qu)實(shi)現(xian)了ICreate接口,并(bing)實(shi)現(xian)了它的Create方法。

 1      /// <summary>
 2         /// 人類實(shi)現工廠接口
 3         /// </summary>
 4         public class People : ICreate
 5         {
 6 
 7             #region ICreate 成員
 8 
 9             public void Create()
10             {
11                 Console.WriteLine("創建人類(lei)");
12             }
13 
14             #endregion
15         }
16         /// <summary>
17         /// 動(dong)物實現工(gong)廠(chang)接口
18         /// </summary>
19         public class Animal : ICreate
20         {
21 
22             #region ICreate 成員
23 
24             public void Create()
25             {
26                 Console.WriteLine("創建動物");
27             }
28 
29             #endregion
30         }

而(er)對于外(wai)界來說,會有(you)另一個類去(qu)為(wei)外(wai)界提供服務(wu),它們(men)可以需要建立People或(huo)者Animal類型的實現,代碼如(ru)下:

 1     public class CreateFactory
 2         {
 3             public static ICreate GeneratorCreate(string createName) { 
 4             switch (createName)
 5             {
 6                 case "People":
 7                     return new People();                   
 8                 case "Animal":
 9                     return new Animal();
10                 default:
11                     throw new NotImplementedException();                   
12             }
13         }

最后,在使用它時,直接使用CreateFactory.GeneratorCreate("類型(xing)條件名")即可生(sheng)成你的類對象了。

 

 返回目錄

posted @ 2012-06-24 14:38  張占嶺  閱讀(7570)  評論(7)    收藏  舉報