欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

使用web工廠(chǎng)方法的效果有哪些

本篇內(nèi)容主要講解“使用web工廠(chǎng)方法的效果有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“使用web工廠(chǎng)方法的效果有哪些”吧!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),香河企業(yè)網(wǎng)站建設(shè),香河品牌網(wǎng)站建設(shè),網(wǎng)站定制,香河網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,香河網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

效果


工廠(chǎng)方法不再將與特定應(yīng)用有關(guān)的類(lèi)綁定到你的代碼中。代碼僅處理Product接口;因此它可以與用戶(hù)定義的任何ConcreteProduct類(lèi)一起使用。

編寫(xiě)可擴(kuò)展代碼經(jīng)常做的一件事就是區(qū)分問(wèn)題領(lǐng)域中共通的部分和該應(yīng)用特定的部分并加以分離。特定部分最常見(jiàn)的入口就是創(chuàng)建對(duì)象的位置。工廠(chǎng)方法模式正好提供了一個(gè)可以將構(gòu)建特定類(lèi)的部分分離出來(lái)的方法。有了這個(gè)方法共通的部分只要面對(duì)Product接口編程即可,從結(jié)構(gòu)上保證了共通代碼可以和任何具象Product類(lèi)一起工作。

工廠(chǎng)方法的一個(gè)潛在缺點(diǎn)在于客戶(hù)可能僅僅為了創(chuàng)建一個(gè)特定的ConcreteProduct對(duì)象,就不得不創(chuàng)建Creator的子類(lèi)。當(dāng)Creator子類(lèi)不必需時(shí),客戶(hù)現(xiàn)在必然要處理類(lèi)演化的其他方面;但是當(dāng)客戶(hù)無(wú)論如何必須創(chuàng)建Creator的子類(lèi)時(shí),創(chuàng)建子類(lèi)也是可行的。

A potential disadvantage of factory methods is that clients might have to subclass the Creator class just to create a particular ConcreteProduct object.Subclassing is fine when the client has to subclass the Creator class anyway, but otherwise the client now must deal with another point of evolution.

這一段的后半部分翻譯不大好理解,和英文原文一起看。工廠(chǎng)方法使用Creator的子類(lèi)創(chuàng)建ConcreteProduct對(duì)象。這是一個(gè)潛在的缺點(diǎn)。之所以說(shuō)是潛在的是因?yàn)椋喝绻@個(gè)Creator子類(lèi)本來(lái)就是必須的,那么使用工廠(chǎng)方法并不會(huì)帶來(lái)新的負(fù)擔(dān),一切都OK;否則的話(huà),客戶(hù)就必須處理演化的其他方面。這里《設(shè)計(jì)模式》的作者沒(méi)說(shuō)明其他方面具體指那些方面,作者猜想可能是指子類(lèi)化Creator類(lèi)所帶來(lái)的負(fù)擔(dān)吧。

下面是Factory Method模式的另外兩種效果:
1 ) 為子類(lèi)提供掛鉤(hook)

用工廠(chǎng)方法在一個(gè)類(lèi)的內(nèi)部創(chuàng)建對(duì)象通常比直接創(chuàng)建對(duì)象更靈活。Factory Method給子類(lèi)一個(gè)掛鉤以提供對(duì)象的擴(kuò)展版本。

在Document的例子中,Document類(lèi)可以定義一個(gè)稱(chēng)為CreateFileDialog的工廠(chǎng)方法,該方法為打開(kāi)一個(gè)已有的文檔創(chuàng)建默認(rèn)的文件對(duì)話(huà)框?qū)ο蟆?Document的子類(lèi)可以重定義這個(gè)工廠(chǎng)方法以定義一個(gè)與特定應(yīng)用相關(guān)的文件對(duì)話(huà)框。在這種情況下,工廠(chǎng)方法就不再抽象了而是提供了一個(gè)合理的缺省實(shí)現(xiàn)。

使用工廠(chǎng)方法在類(lèi)內(nèi)部創(chuàng)建對(duì)象有兩個(gè)含義,首先是將創(chuàng)建對(duì)象的代碼封裝在一個(gè)成員函數(shù)中,然后是將這個(gè)函數(shù)聲明為虛函數(shù)。這樣就為派生類(lèi)提供了選擇擴(kuò)展或者不擴(kuò)展的靈活性。

2) 連接平行的類(lèi)層次

迄今為止,在我們所考慮的例子中,工廠(chǎng)方法并不往往只是被Creator調(diào)用,客戶(hù)可以找到一些有用的工廠(chǎng)方法,尤其在平行類(lèi)層次的情況下。

構(gòu)建ConcreteProduct的代碼可以被Creator自己使用,有時(shí)也會(huì)被其他客戶(hù)使用。特別是在平行類(lèi)層次的結(jié)構(gòu)中。

當(dāng)一個(gè)類(lèi)將它的一些職責(zé)委托給一個(gè)獨(dú)立的類(lèi)的時(shí)候,就產(chǎn)生了平行類(lèi)層次。

這句話(huà)不大好理解,別著急接著看下面的例子。

考慮可以被交互操縱的圖形;也就是說(shuō),它們可以用鼠標(biāo)進(jìn)行伸展、移動(dòng),或者旋轉(zhuǎn)。

我們可以將圖形的伸展,移動(dòng)或者旋轉(zhuǎn)看作圖形類(lèi)的一部分職責(zé)。

實(shí)現(xiàn)這樣一些交互并不總是那么容易,它通常需要存儲(chǔ)和更新在給定時(shí)刻記錄操縱狀態(tài)的信息,這個(gè)狀態(tài)僅僅在操縱時(shí)需要。因此它不需要被保存在圖形對(duì)象中。

上述交互操作的實(shí)現(xiàn)有一定難度,而且通常需要存儲(chǔ)操作的狀態(tài)。如果真的在各個(gè)圖形類(lèi)的內(nèi)部實(shí)現(xiàn)會(huì)占據(jù)很大的篇幅。同時(shí)這些信息只是在操作是才需要,并不是各個(gè)圖形類(lèi)本質(zhì)的部分?!对O(shè)計(jì)模式》作者希望表的的應(yīng)該是:將相互操作這部分職責(zé)委托出去的需求是確實(shí)存在的。

此外,當(dāng)用戶(hù)操縱圖形時(shí),不同的圖形有不同的行為。例如,將直線(xiàn)圖形拉長(zhǎng)可能會(huì)產(chǎn)生一個(gè)端點(diǎn)被移動(dòng)的效果,而伸展正文圖形則可能會(huì)改變行距。

不同的圖形對(duì)于伸展,移動(dòng)或旋轉(zhuǎn)的處理經(jīng)常會(huì)不同。這里說(shuō)的是對(duì)于不同的圖形需要不同的處理類(lèi)。

有了這些限制,最好使用一個(gè)獨(dú)立的Manipulator對(duì)象實(shí)現(xiàn)交互并保存所需要的任何與特定操縱相關(guān)的狀態(tài)。不同的圖形將使用不同的Manipulator子類(lèi)來(lái)處理特定的交互。得到的Manipulator類(lèi)層次與Figure類(lèi)層次是平行(至少部分平行),如下圖所示。

使用web工廠(chǎng)方法的效果有哪些

這種圖形類(lèi)和Manipulaotr類(lèi)之間的關(guān)系就是平行類(lèi)。在這個(gè)例子中圖形類(lèi)將控制圖形伸展,移動(dòng),旋轉(zhuǎn)的這部分職責(zé)委托給了Manipulator類(lèi)。

Figure類(lèi)提供了一個(gè)CreateManipulator工廠(chǎng)方法,它使得客戶(hù)可以創(chuàng)建一個(gè)與 Figure相對(duì)應(yīng)的Manipulator。Figure子類(lèi)重定義該方法以返回一個(gè)合適的Manipulator子類(lèi)實(shí)例。做為一種選擇,F(xiàn)igure類(lèi)可以實(shí)現(xiàn)CreateManipulator以返回一個(gè)默認(rèn)的Manipulator實(shí)例,而Figure子類(lèi)可以只是繼承這個(gè)缺省實(shí)現(xiàn)。這樣的Figure類(lèi)不需要相應(yīng)的Manipulator子類(lèi) — 因此該層次只是部分平行的。注意工廠(chǎng)方法是怎樣定義兩個(gè)類(lèi)層次之間的連接的。它將哪些類(lèi)應(yīng)一同工作工作的信息局部化了。

在這個(gè)例子中,通過(guò)Figure提供的CreateManipulator工廠(chǎng)方法建立了Figure類(lèi)和Manipulator類(lèi)之間的聯(lián)系。

類(lèi)似的,我們也可以為Figure類(lèi)設(shè)計(jì)CreateSetupDialog工廠(chǎng)方法以建立Figure類(lèi)和每種圖形的設(shè)定畫(huà)面之間的聯(lián)系。

到此,相信大家對(duì)“使用web工廠(chǎng)方法的效果有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享題目:使用web工廠(chǎng)方法的效果有哪些
網(wǎng)站URL:http://chinadenli.net/article2/pihooc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站策劃、Google定制網(wǎng)站、網(wǎng)站收錄微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)