日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

工厂方法 Factory Method

發(fā)布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 工厂方法 Factory Method 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景:有一個應用框架,它可以向用戶顯示多個文檔。在這個框架中,兩個主要的抽象是類Application和Document.這兩個類都是抽象的。客戶必須通過它們的子類來做與舉替應用相關的實現(xiàn)。

分析:因為被實例化的特定Document子類是與特定應用相關的,所iApplication類不可能預測到那個Document子類將被實例化一一Application類僅直到一個新的文檔何時應被創(chuàng)建,而不知道哪一種Document將被創(chuàng)建。這就產生了一個尷尬的局面框架必須實例化類,但是它只知道不能被實例化的抽象類。
延遲實例化一一工廠方法:

工廠方法模式定義了一個創(chuàng)建對象的接口,但由子類決定要實例化的類是哪一個。工廠方法讓類把實例化推遲到子類。

需求:使用框架開發(fā)一款Word應用程序。

1 namespace FactoryMethod 2 { 3 /// <summary> 4 /// 文檔抽象類,定義了文檔的一般操作接口 5 /// </summary> 6 public abstract class Document 7 { 8 public abstract void Open(); 9 public abstract void Close(); 10 public abstract void Save(); 11 public abstract void Revert(); 12 } 13 14 } 1 namespace FactoryMethod 2 { 3 /// <summary> 4 /// 文檔生產工廠,定義了生產文檔的接口 5 /// </summary> 6 public abstract class Application 7 { 8 public abstract Document CreateDocument(); 9 10 } 11 } using System;namespace FactoryMethod {public class Word:Document{public override void Close(){Console.WriteLine("關閉了一個Word文檔");}public override void Open(){Console.WriteLine("打開了一個Word文檔");}public override void Revert(){Console.WriteLine("恢復了一個Word文檔");}public override void Save(){Console.WriteLine("保存了一個Word文檔");}} } 1 namespace FactoryMethod 2 { 3 public class WordApp : Application 4 { 5 public override Document CreateDocument() 6 { 7 return new Word(); 8 } 9 } 10 } 1 using System; 2 3 namespace FactoryMethod 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Application app = new WordApp(); 10 Document doc = app.CreateDocument(); 11 doc.Open(); 12 doc.Revert(); 13 doc.Save(); 14 doc.Close(); 15 Console.ReadKey(); 16 } 17 } 18 }

運行結果:

?

?新的需求:使用現(xiàn)有框架再開發(fā)一款Excel和PowerPoint應用程序。

分析:方法一:分別增加對應的工廠子類和產品子類即可。

方法二:參數化工廠,根據工廠接收的不同參數,返回不同的產品。(本人比較懶,這種方法要修改很現(xiàn)有多代碼,放棄)

方法三:使用泛型。

這里我就采用泛型了,泛型的好處是不言而喻的,一次編寫,永久使用,再多的產品使用這一個模板工廠就可以了。而且也不需要改變原有代碼。

1 namespace FactoryMethod 2 { 3 public class App<T> : Application where T : Document,new() 4 { 5 public override Document CreateDocument() 6 { 7 return new T(); 8 } 9 } 10 } 1 using System; 2 3 namespace FactoryMethod 4 { 5 class Excel:Document 6 { 7 public override void Close() 8 { 9 Console.WriteLine("關閉了一個Excel文檔"); 10 } 11 12 public override void Open() 13 { 14 Console.WriteLine("打開了一個Excel文檔"); 15 } 16 17 public override void Revert() 18 { 19 Console.WriteLine("恢復了一個Excel文檔"); 20 } 21 22 public override void Save() 23 { 24 Console.WriteLine("保存了一個Excel文檔"); 25 } 26 } 27 } 1 using System; 2 namespace FactoryMethod 3 { 4 public class PPT:Document 5 { 6 public override void Close() 7 { 8 Console.WriteLine("關閉了一個PPT文檔"); 9 } 10 11 public override void Open() 12 { 13 Console.WriteLine("打開了一個PPT文檔"); 14 } 15 16 public override void Revert() 17 { 18 Console.WriteLine("恢復了一個PPT文檔"); 19 } 20 21 public override void Save() 22 { 23 Console.WriteLine("保存了一個PPT文檔"); 24 } 25 } 26 }

?運行結果:

?

參考資料《Design Patterns》

轉載于:https://www.cnblogs.com/blackteeth/p/10217509.html

總結

以上是生活随笔為你收集整理的工厂方法 Factory Method的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美性精品 | 日韩av地址 | 人与动物黄色片 | 国产午夜视频在线播放 | 欧美精品人妻一区二区 | 亚洲综合一区中 | 超碰人人草人人干 | 久久人爽| 久久伊人中文字幕 | 日韩欧美福利视频 | 人妻aⅴ无码一区二区三区 阿v免费视频 | 久久久久久电影 | 五月天一区二区三区 | 国产精欧美一区二区三区蓝颜男同 | 久久久经典 | 日韩在线一区二区三区 | 亚洲天堂伊人网 | 日本一区不卡视频 | 国产手机av | 狼人精品一区二区三区在线 | 双性娇喘浑圆奶水h男男漫画 | 日韩av无码一区二区三区 | 日韩xx视频 | 日本免费a级片 | 三上悠亚人妻中文字幕在线 | av成人免费在线观看 | 色爽爽一区二区三区 | 欧美午夜精品一区二区 | 日本国产一区 | 国产精品美女一区二区 | 欧美日批视频 | 16—17女人毛片 | 日本一道在线 | 男人与雌性宠物交啪啪 | 偷拍第一页 | 36d大奶 | 一区二区三区免费在线 | 成人免费看片载 | 国产又粗又猛又色又 | 成人亚洲玉足脚交系列 | 俺来也俺也啪www色 欧洲一区二区视频 | 男人天堂一区二区 | 久久久啊啊啊 | 日韩视频久久 | 日日夜夜骑 | 国产性xxxx高清 | 久草电影在线 | 日本激情免费 | 亚洲美女毛片 | 国产少女免费观看高清 | 性折磨bdsm欧美激情另类 | 国产视频一二 | 一道本无吗一区 | 亚洲日本欧美 | 国精产品一区一区三区有限公司杨 | 久久精品噜噜噜成人88aⅴ | 男女羞羞的视频 | 久久视频免费看 | japanese24hdxxxx日韩 | 理论黄色片 | 久久密桃 | 亚洲一区二区黄 | 国产成人精品av在线观 | 大吊av| 久久精品国产亚洲AV成人婷婷 | 一区二区三区视频播放 | 91超薄肉色丝袜交足高跟凉鞋 | 99热激情 | 国产波霸爆乳一区二区 | 风间由美在线观看 | 美女色呦呦 | 欧美成人乱码一区二区三区 | 欧美日韩亚洲视频 | 亚av| 91精品国产电影 | 韩国三级bd高清中字2021 | av免费片 | 久久精品视频在线 | 在线1区 | 美女一级黄 | 亚洲精品视频久久 | 久久精品欧美日韩精品 | 久久99久久99精品免视看婷婷 | 成人观看| 亚洲欧美韩日 | 欧美日韩精品在线观看 | 伊人久久一区二区 | 中文字幕日韩经典 | 国产v亚洲v天堂无码久久久 | 国产美女无遮挡免费 | 无码aⅴ精品一区二区三区浪潮 | 国产中文字幕乱人伦在线观看 | 国产一区二区三区在线播放无 | 欧美日韩看片 | 精品99999 | 3d成人动漫在线观看 | 国产精品美乳在线观看 | 国产精品女人和拘 | 欧美高清视频在线观看 |