九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

由淺入深學(xué)工廠模式

  • 資源ID:33397312       資源大小:383KB        全文頁數(shù):15頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

由淺入深學(xué)工廠模式

由淺入深學(xué)“工廠模式”(1)2007-03-25 17:131、傳授設(shè)計(jì)模式中存在的問題我個(gè)人最近對(duì)設(shè)計(jì)模式中的工廠模式進(jìn)行了比較深入的學(xué)習(xí),通過學(xué)習(xí)感悟出,現(xiàn)在很多設(shè)計(jì)模式傳道者,在講述設(shè)計(jì)模式的過程中存在一些問題,使得設(shè)計(jì)模式變得很難理解。設(shè)計(jì)模式本身很抽象,但是這些傳道者在講述的過程中,將一個(gè)抽象的東西講的更抽象,從而使我們望而卻步。有些人在講述的時(shí)候,沒有考慮讀者的注意力。比如我在看C#設(shè)計(jì)模式的時(shí)候,在講述抽象工廠模式的時(shí)候,直接就進(jìn)入了一個(gè)示例,而且這個(gè)例子比較復(fù)雜,涉及了比較多的概念、術(shù)語,而且還有算法要處理。但是這些和要講述的核心內(nèi)容無關(guān),我想要看懂他的示例就要將這個(gè)東西都搞懂,就分散了我的注意力。我個(gè)人總結(jié),學(xué)習(xí)設(shè)計(jì)模式的方法是,首先找到一個(gè)突破口,比如可以先學(xué)習(xí)構(gòu)造型模式中簡(jiǎn)單的模式,將它理解、熟練應(yīng)用。通過對(duì)一、兩個(gè)模式有一個(gè)深入的認(rèn)識(shí)之后,再學(xué)習(xí)其它比較復(fù)雜一點(diǎn)的模式就容易多了,這是一種迭代的思想在學(xué)習(xí)中的應(yīng)用。另外學(xué)習(xí)任何一種設(shè)計(jì)模式的過程應(yīng)該是具體抽象再具體這個(gè)的一個(gè)過程。這句話的意思是首先通過一個(gè)比較具體一點(diǎn)的例子來幫助理解設(shè)計(jì)模式,在理解之后將你的理解擴(kuò)展到解決這一類問題,上升到一定的理論高度。然后就是再到具體,也就是應(yīng)用設(shè)計(jì)模式,應(yīng)用理論解決自己遇到的實(shí)際問題。2、學(xué)習(xí)工廠模式的預(yù)備知識(shí):首先聲明這些預(yù)備知識(shí)并不是工廠模式僅僅需要,因?yàn)槲蚁戎v述工廠模式,所以在學(xué)習(xí)工廠模式之前將這些問題提出。2.1 Upcasting:Upcasting中文翻譯有好幾個(gè),比如向上類型轉(zhuǎn)換、向上轉(zhuǎn)型、上溯造型。我個(gè)人比較喜歡向上轉(zhuǎn)型這個(gè)翻譯,即簡(jiǎn)單又含義明確。向上轉(zhuǎn)型這個(gè)概念,我在Bruce Eckel的Thinking in c+、Thinking in Java中都看到過,我不是很確定這個(gè)概念是否是他提出來的。向上轉(zhuǎn)型是把一個(gè)派生類當(dāng)作它的基類使用。我們將一個(gè)更特殊的類型轉(zhuǎn)換到一個(gè)更常規(guī)的類型,這當(dāng)然是安全的。派生類是基類的一個(gè)超集。它可以包含比基類更多的方法,但它至少包含了基類的方法。向上轉(zhuǎn)型給我們帶來的好處就是我們可以將不同的派生通過一種統(tǒng)一的方式進(jìn)行處理。向上轉(zhuǎn)型帶來的弊端就是我們向上轉(zhuǎn)型的過程會(huì)丟失派生類的接口。既然有向上轉(zhuǎn)型,也就有向下轉(zhuǎn)型即DownCasting,我們?cè)诖瞬蛔鲈敿?xì)討論。下面使用一個(gè)例子來示例向上轉(zhuǎn)型。public class Base public void Test() MessageBox.Show("OK"); public class Derive:Base private void button1_Click(object sender, System.EventArgs e) Base b=new Derive();b.Test();2.2 多態(tài)我不敢想象離開了多態(tài)后的設(shè)計(jì)模式是一個(gè)什么樣子。什么是多態(tài),我喜歡總結(jié)這樣一句話來回答這個(gè)問題,“一個(gè)接口,多種實(shí)現(xiàn)”。注意這里的接口不僅僅表示Interface關(guān)鍵字,是廣義上的接口。在C#中實(shí)現(xiàn)接口我們有兩種途徑,一種是借助繼承來實(shí)現(xiàn),一種是借助Interface來實(shí)現(xiàn)。3、工廠設(shè)計(jì)模式理論3.1 概述工廠模式具體包括了簡(jiǎn)單工廠、工廠方法、抽象工廠,它們是按照從簡(jiǎn)單到復(fù)雜的順序排列的,屬于設(shè)計(jì)模式中的創(chuàng)建型,其中簡(jiǎn)單工廠并不屬于GOF的23中模式。但是它是理解其它的工廠模式的一個(gè)很好的基礎(chǔ),所以很多人在講述設(shè)計(jì)模式的時(shí)候會(huì)提到簡(jiǎn)單工廠模式。創(chuàng)建型模式關(guān)注的是對(duì)象的創(chuàng)建,創(chuàng)建型模式將創(chuàng)建對(duì)象的過程進(jìn)行了抽象,也可以理解為將創(chuàng)建對(duì)象的過程進(jìn)行了封裝,作為客戶程序僅僅需要去使用對(duì)象,而不再關(guān)心創(chuàng)建對(duì)象過程中的邏輯。3.2 不使用任何模式我們現(xiàn)在有這樣的一個(gè)設(shè)計(jì),影像家電(VideoWiring)包括了DVD、VCD。在基類VideoWiring中有PlayVideo方法,子類重載了這個(gè)方法。我們?nèi)绾蝸碚{(diào)用PlayVideo進(jìn)行播放呢。我們可以看到下面的代碼可以實(shí)現(xiàn)。下面是調(diào)用對(duì)象的方法進(jìn)行播放的代碼:public abstract class VideoWiring public abstract string PlayVideo();public class VCD: VideoWiring public override string PlayVideo() return "正在播放播放VCD" public class DVD: VideoWiring public override string PlayVideo() return "正在播放播放DVD" dvd.PlayVideo();這樣的語句。private void PlayVideo() DVD dvd=new DVD(); MessageBox.Show(dvd.PlayVideo(); VCD vcd=new VCD(); MessageBox.Show(VCD.PlayVideo();上面的代碼可以實(shí)現(xiàn)功能但是不好,為什么呢?類實(shí)現(xiàn)了多態(tài),但是我們?cè)谡{(diào)用的時(shí)候并沒有利用多態(tài)。如果我們有很多的影像家電產(chǎn)品,就需要寫很多的類似下面是使用多態(tài)完成播放功能的代碼:private void PlayVideo() VideoWiring vw; vw=new DVD(); Play(vw); vw=new VCD(); Play(vw);private void Play(VideoWiring vw) string str=vw.PlayVideo(); MessageBox.Show(str);無論是什么影像家電產(chǎn)品,我們都可以使用一個(gè)統(tǒng)一的方式進(jìn)行播放,即vw.PlayVideo()。 我們?cè)儆懻撘幌拢厦娴拇a存在的問題。雖然上的代碼很短,應(yīng)該不會(huì)有問題,但是我們定位的目標(biāo)應(yīng)該更高些,應(yīng)該考慮怎樣達(dá)到良好的封裝效果,減少錯(cuò)誤修改的機(jī)會(huì)。我們自然的應(yīng)該考慮對(duì)象創(chuàng)建的問題了,能不能讓不同的影像家電產(chǎn)品的創(chuàng)建方式相同,而且這個(gè)創(chuàng)建過程對(duì)使用者封裝,也就是說讓對(duì)象的創(chuàng)建象播放功能那樣簡(jiǎn)單、統(tǒng)一。如果能夠?qū)崿F(xiàn),會(huì)給我們的系統(tǒng)帶來更大的可擴(kuò)展性和盡量少的修改量?!巴郏∧窃摱嗪醚健?。“不要羨慕了,來看看簡(jiǎn)單工廠模式,聽說它能夠?qū)崿F(xiàn)”。3.3 簡(jiǎn)單工廠模式我們使用簡(jiǎn)單工廠對(duì)上面的代碼繼續(xù)改進(jìn),根據(jù)上面的分析我們考慮對(duì)對(duì)象創(chuàng)建進(jìn)行近一步的封裝。使用一個(gè)類專門來完成對(duì)對(duì)象創(chuàng)建的封裝,這個(gè)類我們稱為工廠,因?yàn)樗淖饔煤軉我痪蜕沙鲆粋€(gè)個(gè)的類。下面是一個(gè)工廠類的示例代碼:public class Create public static VideoWiring factory(string VideoName) switch(VideoName) case "DVD": return new DVD(); case "VCD": return new VCD(); return null; 這樣我們的客戶端代碼又可以更加有效簡(jiǎn)潔了:注意:在上面的兩段代碼示例中我們就已經(jīng)使用了向上轉(zhuǎn)型。首先注意在Create類的factory方法中使用了return new DVD();這樣的語句,但是這個(gè)函數(shù)的返回值卻是VideoWiring,它DVD類的基類。所以我們的客戶程序才可以使用VideoWiring vw=Create.factory("DVD")這樣的語句。這樣客戶程序并不關(guān)心創(chuàng)建是如何完成的,以及創(chuàng)建的對(duì)象是什么,我們都可以調(diào)用基類統(tǒng)一的接口實(shí)現(xiàn)他們的功能。使用UML表示如下圖所示:private void PlayVideo() VideoWiring vw=Create.factory("DVD"); vw.PlayVideo(); vw=Create.factory("VCD"); vw.PlayVideo();角色說明:工廠類(Creator):根據(jù)業(yè)務(wù)邏輯創(chuàng)建具體產(chǎn)品,由客戶程序直接調(diào)用。抽象產(chǎn)品(Product):作為具體產(chǎn)品的基類,提供統(tǒng)一的接口,也是工廠類要返回的類型。具體產(chǎn)品(Concrete Product):工廠類真正要?jiǎng)?chuàng)建的類型。上圖中僅僅展示了一個(gè)具體產(chǎn)品,有多個(gè)產(chǎn)品的時(shí)候類似。下面我們對(duì)簡(jiǎn)單工廠模式進(jìn)行總結(jié)。使用簡(jiǎn)單工廠的好處是:1、充分利用了多態(tài)性不管什么具體產(chǎn)品都返回抽象產(chǎn)品。2、充分利用了封裝性,內(nèi)部產(chǎn)品發(fā)生變化時(shí)外部使用者不會(huì)受到影響。缺點(diǎn)是:如果增加了新的產(chǎn)品,就必須得修改工廠(Factory)。抽象工廠模式可以向客戶端提供一個(gè)接口,使得客戶端在不必指定產(chǎn)品的具體類型的情況下,創(chuàng)建多個(gè)產(chǎn)品族中的產(chǎn)品對(duì)象。這就是抽象工廠模式的用意我們將工廠模式推廣到一般的情況,它的類圖如下所示:在有名的OOD的設(shè)計(jì)原則中有一個(gè)叫做里氏代換原則(Liskov Substitution Principle, LSP)。它的實(shí)質(zhì)也就是講向上轉(zhuǎn)型。它的內(nèi)容是:任何接收父類型的地方,都應(yīng)當(dāng)能夠接收子類型,換句話說如果使用的是一個(gè)基類的話,那么一定適用于其子類,而且程序察覺不出基類對(duì)象和子類對(duì)象的區(qū)別。LSP是繼承復(fù)用的基石,只有當(dāng)派生類可以替換掉基類,軟件的功能不受到影響時(shí),基類才能真正被復(fù)用。3.4 工廠方法 有了簡(jiǎn)單工廠模式后,已經(jīng)給我們帶來了一些好處,但是還存在一些問題,如果我們又多了一個(gè)影像家電產(chǎn)品MP4之后,我們可以使MP4類從VideoWiring派生,但是卻要修改Create類的代碼使它能夠生產(chǎn)出MP4這個(gè)產(chǎn)品來。不好的地方就在于,我們每次多一個(gè)產(chǎn)品的時(shí)候都需要修改Create而不是保持原來的代碼不修改僅僅進(jìn)行一種擴(kuò)展。在Create類中修改不是每次都簡(jiǎn)單的多一個(gè)Case語句就能夠解決問題。因?yàn)镃reate類中還封裝了創(chuàng)建對(duì)象的邏輯,有可能還需要修改這些邏輯。這就違反了面向?qū)ο笤O(shè)計(jì)中一個(gè)很重要的原則“開-閉”原則?!伴_-閉”原則(the Open Closed Principle OCP):在面向?qū)ο笤O(shè)計(jì)中,如何通過很小的設(shè)計(jì)改變就可以應(yīng)對(duì)設(shè)計(jì)需求的變化,這是令設(shè)計(jì)者極為關(guān)注的問題。開閉原則就是一個(gè)軟件實(shí)體在擴(kuò)展性方面應(yīng)該是開放的而在更改性方面應(yīng)該是封閉的。這個(gè)原則說的是,在設(shè)計(jì)一個(gè)模塊的時(shí)候,應(yīng)當(dāng)使這個(gè)模塊可以在不被修改的前提下被擴(kuò)展。通過擴(kuò)展已有的軟件系統(tǒng),可以提供新的行為,以滿足對(duì)軟件的新需求,使變化中的軟件系統(tǒng)有一定的適應(yīng)性和靈活性。已有的軟件模塊,特別是最重要的抽象層模塊不能再修改,這就使得變化中的軟件系統(tǒng)有一定的穩(wěn)定性和延續(xù)性。因此在進(jìn)行面向?qū)ο笤O(shè)計(jì)時(shí)要盡量考慮接口封裝機(jī)制、抽象機(jī)制和多態(tài)技術(shù)。前邊設(shè)計(jì)(簡(jiǎn)單工廠)中存在的問題就是它分裝了創(chuàng)建不同對(duì)象的邏輯,當(dāng)有新的產(chǎn)品的時(shí)候不易擴(kuò)展。在開閉原則的指導(dǎo)下我們考慮如何重新修改前邊的設(shè)計(jì),我們要盡量使用抽象機(jī)制和多態(tài)技術(shù)。我們放棄對(duì)創(chuàng)建不同對(duì)象的邏輯的封裝,也采用類似產(chǎn)品的方式,抽象出抽象工廠,具體工廠,具體工廠從抽象工廠派生,每個(gè)具體工廠中生產(chǎn)一種具體的產(chǎn)品?!疤袅耍嬖V你,你的這個(gè)想法就是工廠方法模式”。下面使用工廠方法模式修改前邊的設(shè)計(jì):VideoWiring、DVD、VCD三個(gè)類的代碼和前邊的相同,下面我們看看在客戶端如何使用。 public abstract class Create public abstract VideoWiring factory();public class DVDCreate: Create public override VideoWiring factory() return new DVD(); public class VCDCreate: Create public override VideoWiring factory() return new VCD(); 下面我們考慮需要擴(kuò)展一個(gè)新的產(chǎn)品MP4的時(shí)候如何處理。private void PlayVideo() VideoWiring dvd,vcd; Create dvdCreate,vcdCreate; dvdCreate=new DVDCreate(); dvd=dvdCreate.factory(); Play(dvd); vcdCreate=new VCDCreate(); vcd=vcdCreate.factory(); Play(vcd);我們來看看增加的代碼:public class MP4Create: Create public override VideoWiring factory() return new MP4(); public class MP4: VideoWiring public override string PlayVideo() return "正在播放MP4" 我們?cè)倏纯纯蛻舳舜a:MP4的時(shí)候沒有修改原來的代碼,而僅僅是對(duì)原來的功能進(jìn)行擴(kuò)展系統(tǒng)便有了MP4這個(gè)產(chǎn)品的功能。private void PlayVideo() VideoWiring dvd,vcd; Create dvdCreate,vcdCreate; dvdCreate=new DVDCreate(); dvd=dvdCreate.factory(); Play(dvd); vcdCreate=new VCDCreate(); vcd=vcdCreate.factory(); Play(vcd); /下面是新增的代碼 VideoWiring mp4; Create mp4Create; mp4Create=new MP4Create(); mp4=mp4Create.factory(); Play(mp4);我們可以看出使用了工廠方法模式后,很好的滿足了開閉原則,當(dāng)我們?cè)黾恿艘粋€(gè)新的產(chǎn)品將工廠方法模式推廣到一般情況:角色說明:抽象工廠(Creator):定義具體工廠的接口,所有的創(chuàng)建對(duì)象的工廠類都必須實(shí)現(xiàn)這些接口。具體工廠(ConcreteCreator):具體工廠包含與應(yīng)用密切相關(guān)的邏輯。復(fù)雜創(chuàng)建具體的產(chǎn)品。抽象產(chǎn)品(Product):所有產(chǎn)品的基類。具體產(chǎn)品(ConcreteProduct):實(shí)現(xiàn)抽象產(chǎn)品申明的接口。工廠方法模式所創(chuàng)建的每個(gè)對(duì)象都是某個(gè)具體產(chǎn)品的實(shí)例。工廠方法模式的用意是定義一個(gè)創(chuàng)建產(chǎn)品對(duì)象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類中。工廠方法模式是簡(jiǎn)單工廠模式的進(jìn)一步抽象和推廣。由于使用了多態(tài)性,工廠方法模式保持了簡(jiǎn)單工廠模式的優(yōu)點(diǎn),而且克服了它的缺點(diǎn)。在工廠方法模式中,核心的工廠類不再負(fù)責(zé)所有的產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建的工作交給子類去做。這個(gè)核心類則成為了一個(gè)抽象工廠角色,僅負(fù)責(zé)給出具體工廠子類必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類應(yīng)當(dāng)被實(shí)例化這種細(xì)節(jié)。這種進(jìn)一步抽象化的結(jié)果,使這種工廠方法模式可以用來允許系統(tǒng)在不修改具體工廠角色的情況下引進(jìn)新的產(chǎn)品。3.5 抽象工廠模式我們繼續(xù)對(duì)影像家電產(chǎn)品的情形進(jìn)行分析,我們已經(jīng)可以使用工廠方法比較好的實(shí)現(xiàn)了產(chǎn)品的創(chuàng)建,但是在以前的分析中我們并沒有考慮產(chǎn)品種類及生產(chǎn)廠家這樣的問題。就拿DVD來說TCL可以生產(chǎn)、LG也生產(chǎn)等等很多廠家都生產(chǎn)。DVD是產(chǎn)品種類中的一種,產(chǎn)品種類這個(gè)概念在有些書上稱為產(chǎn)品族。從另外一個(gè)角度來看TCL可以生產(chǎn)DVD、VCD等等很多產(chǎn)品,這些產(chǎn)品在一起就可以構(gòu)成一個(gè)產(chǎn)品結(jié)構(gòu)。當(dāng)我們考慮了這些問題后,提出了兩個(gè)概念:產(chǎn)品種類、產(chǎn)品結(jié)構(gòu)。我們?cè)诠S方法中討論的是一個(gè)個(gè)單一的產(chǎn)品的創(chuàng)建,如果我們對(duì)這個(gè)問題進(jìn)行進(jìn)一步的研究、拓展,就應(yīng)該從單一的產(chǎn)品過度到多個(gè)產(chǎn)品種類,在工廠方法中我們考慮DVD是一個(gè)單一的產(chǎn)品,現(xiàn)在我們認(rèn)為DVD是一個(gè)產(chǎn)品種類,有TCL生產(chǎn)的DVD,有LG生產(chǎn)的DVD,VCD是另一個(gè)產(chǎn)品種類,有TCL生產(chǎn)的VCD,有LG生產(chǎn)的VCD。就這個(gè)問題我們重新分析,有兩個(gè)產(chǎn)品種類分別是DVD、VCD,有兩個(gè)工廠是TCL和LG,它們分別生產(chǎn)DVD和VCD。我們使用下面的類圖來表示:DVD是抽象類它提供統(tǒng)一的接口,LGDVD、TCLDVD是兩個(gè)具體的類。VCD和DVD類似。有一個(gè)抽象的工廠Create,從它派生了兩個(gè)具體的類TCLCreate、LGCreate。Create中提供了兩個(gè)抽象方法factoryDVD和factoryVCD它們提供了兩個(gè)接口,用于創(chuàng)建DVD產(chǎn)品和VCD產(chǎn)品。在TCLCreate、LGCreate中實(shí)現(xiàn)這兩個(gè)方法。這樣TCLCreate就可以創(chuàng)建自己的DVD、VCD,同樣LGCreate也可以傳經(jīng)自己的產(chǎn)品。下面是代碼結(jié)構(gòu):public abstract class Create public abstract DVD factoryDVD(); public abstract VCD factoryVCD();public class LGCreate: Create public override DVD factoryDVD() return new LGDVD(); public override VCD factoryVCD() return new LGVCD(); public class TCLCreate: Create public override DVD factoryDVD() return new TCLDVD(); public override VCD factoryVCD() return new TCLVCD(); public abstract class DVD public abstract string PlayVideo();public class LGDVD: DVD public override string PlayVideo() return "LG的DVD在播放" public class TCLDVD: DVD public override string PlayVideo() return "TCL的DVD正在播放" public abstract class VCD public abstract string PlayVideo();public class LGVCD: VCD public override string PlayVideo() return "LG的VCD正在播放" public class TCLVCD: VCD public override string PlayVideo() return "TCL的VCD正在播放" 客戶端使用抽象工廠代碼如下:private void button1_Click(object sender, System.EventArgs e) Create TCL,LG; TCL=new TCLCreate(); LG=new LGCreate(); PlayDVD(TCL); /輸出“TCL的DVD在播放” PlayDVD(LG); /輸出“LG的DVD在播放”private void PlayDVD(Create create) DVD dvd=create.factoryDVD(); MessageBox.Show(dvd.PlayVideo();下面將抽象工廠模式推廣到一般情況,它的類圖如下所示:抽象工廠:提供所有具體工廠的接口,與應(yīng)用系統(tǒng)的具體商業(yè)邏輯無關(guān)。基本上為每一個(gè)產(chǎn)品種類提供一個(gè)創(chuàng)建方法。具體工廠:具體負(fù)責(zé)創(chuàng)建產(chǎn)品結(jié)構(gòu)中每個(gè)產(chǎn)品。它包含了創(chuàng)建不同產(chǎn)品的商業(yè)邏輯。它實(shí)現(xiàn)抽象工廠中的接口。抽象產(chǎn)品:定義產(chǎn)品的共同接口。具體產(chǎn)品:是客戶需要?jiǎng)?chuàng)建的具體對(duì)象。在工廠方法中每個(gè)工廠負(fù)責(zé)創(chuàng)建一個(gè)產(chǎn)品,在抽象工廠中每個(gè)工廠創(chuàng)建一系列產(chǎn)品。在上面舉例中使用TCL、LG這樣的實(shí)際的工廠,在實(shí)際的應(yīng)用中,往往是我們根據(jù)產(chǎn)品抽象了類,它們主要負(fù)責(zé)一系列產(chǎn)品的創(chuàng)建,將這些負(fù)責(zé)抽象工廠的類稱為具體工廠,從這些具體工廠更進(jìn)一步進(jìn)行抽象,抽象出的工廠稱為抽象工廠。下面我們看看抽象工廠模式的擴(kuò)展。抽象工廠的擴(kuò)展包括了新增一個(gè)產(chǎn)品種類及新增一個(gè)工廠。當(dāng)在現(xiàn)有的抽象產(chǎn)品下添加新的具體產(chǎn)品時(shí)我們僅僅需要增加一個(gè)新的工廠就可以。比如現(xiàn)在有了Haier(海爾)的DVD及VCD,我們很容易就實(shí)現(xiàn)擴(kuò)展,而且也滿足了“開閉原則”。如下圖所示:當(dāng)我們有了一個(gè)新的產(chǎn)品的增加的時(shí)候,就不能很好的滿足“開閉原則”了,因?yàn)槲覀冃枰薷拿總€(gè)產(chǎn)出的方法從而是現(xiàn)有的工廠可以創(chuàng)建出新的產(chǎn)品。比如我們?cè)黾右粋€(gè)Mp4產(chǎn)品種類。

注意事項(xiàng)

本文(由淺入深學(xué)工廠模式)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!