使用web工廠方法的效果有哪些

本篇內容主要講解“使用web工廠方法的效果有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“使用web工廠方法的效果有哪些”吧!

創新互聯是一家集網站建設,香河企業網站建設,香河品牌網站建設,網站定制,香河網站建設報價,網絡營銷,網絡優化,香河網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。

效果


工廠方法不再將與特定應用有關的類綁定到你的代碼中。代碼僅處理Product接口;因此它可以與用戶定義的任何ConcreteProduct類一起使用。

編寫可擴展代碼經常做的一件事就是區分問題領域中共通的部分和該應用特定的部分并加以分離。特定部分最常見的入口就是創建對象的位置。工廠方法模式正好提供了一個可以將構建特定類的部分分離出來的方法。有了這個方法共通的部分只要面對Product接口編程即可,從結構上保證了共通代碼可以和任何具象Product類一起工作。

工廠方法的一個潛在缺點在于客戶可能僅僅為了創建一個特定的ConcreteProduct對象,就不得不創建Creator的子類。當Creator子類不必需時,客戶現在必然要處理類演化的其他方面;但是當客戶無論如何必須創建Creator的子類時,創建子類也是可行的。

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.

這一段的后半部分翻譯不大好理解,和英文原文一起看。工廠方法使用Creator的子類創建ConcreteProduct對象。這是一個潛在的缺點。之所以說是潛在的是因為:如果這個Creator子類本來就是必須的,那么使用工廠方法并不會帶來新的負擔,一切都OK;否則的話,客戶就必須處理演化的其他方面。這里《設計模式》的作者沒說明其他方面具體指那些方面,作者猜想可能是指子類化Creator類所帶來的負擔吧。

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

用工廠方法在一個類的內部創建對象通常比直接創建對象更靈活。Factory Method給子類一個掛鉤以提供對象的擴展版本。

在Document的例子中,Document類可以定義一個稱為CreateFileDialog的工廠方法,該方法為打開一個已有的文檔創建默認的文件對話框對象。 Document的子類可以重定義這個工廠方法以定義一個與特定應用相關的文件對話框。在這種情況下,工廠方法就不再抽象了而是提供了一個合理的缺省實現。

使用工廠方法在類內部創建對象有兩個含義,首先是將創建對象的代碼封裝在一個成員函數中,然后是將這個函數聲明為虛函數。這樣就為派生類提供了選擇擴展或者不擴展的靈活性。

2) 連接平行的類層次

迄今為止,在我們所考慮的例子中,工廠方法并不往往只是被Creator調用,客戶可以找到一些有用的工廠方法,尤其在平行類層次的情況下。

構建ConcreteProduct的代碼可以被Creator自己使用,有時也會被其他客戶使用。特別是在平行類層次的結構中。

當一個類將它的一些職責委托給一個獨立的類的時候,就產生了平行類層次。

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

考慮可以被交互操縱的圖形;也就是說,它們可以用鼠標進行伸展、移動,或者旋轉。

我們可以將圖形的伸展,移動或者旋轉看作圖形類的一部分職責。

實現這樣一些交互并不總是那么容易,它通常需要存儲和更新在給定時刻記錄操縱狀態的信息,這個狀態僅僅在操縱時需要。因此它不需要被保存在圖形對象中。

上述交互操作的實現有一定難度,而且通常需要存儲操作的狀態。如果真的在各個圖形類的內部實現會占據很大的篇幅。同時這些信息只是在操作是才需要,并不是各個圖形類本質的部分。《設計模式》作者希望表的的應該是:將相互操作這部分職責委托出去的需求是確實存在的。

此外,當用戶操縱圖形時,不同的圖形有不同的行為。例如,將直線圖形拉長可能會產生一個端點被移動的效果,而伸展正文圖形則可能會改變行距。

不同的圖形對于伸展,移動或旋轉的處理經常會不同。這里說的是對于不同的圖形需要不同的處理類。

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

使用web工廠方法的效果有哪些

這種圖形類和Manipulaotr類之間的關系就是平行類。在這個例子中圖形類將控制圖形伸展,移動,旋轉的這部分職責委托給了Manipulator類。

Figure類提供了一個CreateManipulator工廠方法,它使得客戶可以創建一個與 Figure相對應的Manipulator。Figure子類重定義該方法以返回一個合適的Manipulator子類實例。做為一種選擇,Figure類可以實現CreateManipulator以返回一個默認的Manipulator實例,而Figure子類可以只是繼承這個缺省實現。這樣的Figure類不需要相應的Manipulator子類 — 因此該層次只是部分平行的。注意工廠方法是怎樣定義兩個類層次之間的連接的。它將哪些類應一同工作工作的信息局部化了。

在這個例子中,通過Figure提供的CreateManipulator工廠方法建立了Figure類和Manipulator類之間的聯系。

類似的,我們也可以為Figure類設計CreateSetupDialog工廠方法以建立Figure類和每種圖形的設定畫面之間的聯系。

到此,相信大家對“使用web工廠方法的效果有哪些”有了更深的了解,不妨來實際操作一番吧!這里是創新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

分享題目:使用web工廠方法的效果有哪些
網站URL:http://m.kartarina.com/article2/pihooc.html

成都網站建設公司_創新互聯,為您提供網站導航網站策劃Google定制網站網站收錄微信小程序

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設
主站蜘蛛池模板: 少妇无码AV无码专区线| 精品无码国产一区二区三区AV| 精品无码国产污污污免费网站| 精品无码免费专区毛片| 无码乱码观看精品久久| 久久亚洲精品成人av无码网站| 无码中文字幕av免费放| 无码国内精品久久人妻| 国产精品无码久久av| 久久精品aⅴ无码中文字字幕不卡| 无码h黄肉3d动漫在线观看| 久久午夜夜伦鲁鲁片免费无码| 成人无码区免费视频观看 | 亚洲综合无码精品一区二区三区| 日韩精品无码一区二区三区不卡| 亚洲精品无码久久毛片| 亚洲aⅴ无码专区在线观看| 亚洲成A人片在线观看无码不卡| 人妻精品无码一区二区三区| 久久亚洲精品成人av无码网站| 亚洲综合无码AV一区二区| 亚洲成?Ⅴ人在线观看无码| 国产做无码视频在线观看| 亚洲爆乳无码精品AAA片蜜桃| 人妻精品久久无码专区精东影业| 中文人妻无码一区二区三区 | 乱人伦人妻中文字幕无码| 亚洲国产成人精品无码一区二区| 东京热人妻无码人av| 狠狠噜天天噜日日噜无码| 国产午夜鲁丝片AV无码免费| 无码一区18禁3D| 一本色道无码道DVD在线观看| 亚洲美免无码中文字幕在线| 无码AV岛国片在线播放| 毛片免费全部播放无码| 激情无码人妻又粗又大中国人| 老司机亚洲精品影院无码| 亚洲日韩精品无码专区加勒比 | 亚洲AV无码一区二区乱子仑| 久久亚洲AV成人出白浆无码国产|