web創(chuàng)建型模式的相關(guān)知識(shí)點(diǎn)有哪些

這篇文章主要講解了“web創(chuàng)建型模式的相關(guān)知識(shí)點(diǎn)有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“web創(chuàng)建型模式的相關(guān)知識(shí)點(diǎn)有哪些”吧!

成都創(chuàng)新互聯(lián)公司主營(yíng)黑河網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app開發(fā)定制,黑河h5微信小程序搭建,黑河網(wǎng)站營(yíng)銷推廣歡迎黑河等地區(qū)企業(yè)咨詢

創(chuàng)建型模式的討論

考慮在Prototype模式中描述的繪圖編輯器框架。可以有多種方法通過產(chǎn)品類來參數(shù)化GraphicTool:

這里考慮的是通過一個(gè)選擇板為系統(tǒng)添加圖形要素的場(chǎng)景。

? 使用Factory Method模式,將為選擇板中的每個(gè)Graphic的子類創(chuàng)建一個(gè)GraphicTool的子類。GraphicTool將有一個(gè)NewGraphic操作,每個(gè)GraphicTool的子類都會(huì)重定義它。

按照原型模式章節(jié)中的解釋,GraphicTool類還要另外具有其他的功能,例如圖形移動(dòng),旋轉(zhuǎn)的功能。這里說的應(yīng)該是在此基礎(chǔ)上另外構(gòu)建一個(gè)GraphicTool的子類。

? 使用Abstract Factory模式,將有一個(gè)GraphicsFactory類層次對(duì)應(yīng)于每個(gè)Graphic的子類。在這種情況每個(gè)工廠僅創(chuàng)建一個(gè)產(chǎn)品:CircleFactory將創(chuàng)建Circle,LineFactory將創(chuàng)建Line,等等。GraphicTool將以創(chuàng)建合適種類Graphic的工廠作為參數(shù)。

這里所說的方式是每個(gè)工廠構(gòu)建一個(gè)產(chǎn)品的場(chǎng)景。在實(shí)際的開發(fā)中,也可以為構(gòu)建產(chǎn)品的工廠方法增加參數(shù),這種方式可以有效減少工廠或者工廠方法的數(shù)量。

? 使用Prototype模式,每個(gè)Graphic的子類將實(shí)現(xiàn)Clone操作,并且Graphi cTool將以它所創(chuàng)建的Graphic的原型作為參數(shù)。

這是《設(shè)計(jì)模式》書中選擇的方式。

究竟哪一種模式最好取決于諸多因素。在我們的繪圖編輯器框架中,第一眼看來,F(xiàn)actoryMethod模式使用是最簡(jiǎn)單的。它易于定義一個(gè)新的GraphicTool的子類,并且僅當(dāng)選擇板被定義了的時(shí)候,GraphicTool的實(shí)例才被創(chuàng)建。它的主要缺點(diǎn)在于GraphicTool子類數(shù)目的激增,并且它們都沒有做很多事情。

工廠方法應(yīng)該是作為一個(gè)副業(yè),為現(xiàn)有類增加構(gòu)建關(guān)聯(lián)產(chǎn)品的方法使之成為一個(gè)宿主類,但是實(shí)際使用中經(jīng)常會(huì)出現(xiàn)這種情況:構(gòu)建新的子類只是為了增加新產(chǎn)品。這就有點(diǎn)過了。

Abstract Factory并沒有很大的改進(jìn),因?yàn)樗枰粋€(gè)同樣龐大的Graphics Factory類層次。只有當(dāng)早已存在一個(gè)GraphicsFactory類層次時(shí),Abstract Factory才比Factory Method更好一點(diǎn)—或是因?yàn)榫幾g器自動(dòng)提供(像在Smalltalk或是Objective C中)或是因?yàn)橄到y(tǒng)的其他部分需要這個(gè)Gr aphicsFactory類層次。

某種角度來講,抽象工廠只是將工廠方法從宿主類中獨(dú)立出來的新類,所以也會(huì)具有工廠方法模式類似的問題。

總的來說,Prototype模式對(duì)繪圖編輯器框架可能是最好的,因?yàn)樗鼉H需要為每個(gè)Graphics類實(shí)現(xiàn)一個(gè)Clone操作。這就減少了類的數(shù)目,并且Clone可以用于其他目的而不僅僅是純粹的實(shí)例化(例如,一個(gè)Duplicate菜單操作)。

這句化換個(gè)說法就是對(duì)于原型模式的場(chǎng)景來說,原型模式是最合適的。這是當(dāng)然的事情,要不然原型模式也不會(huì)選擇這個(gè)場(chǎng)景對(duì)吧。在實(shí)際的開發(fā)中用到原型模式的時(shí)候無法回避的是需要解決原型從哪里來的問題。

Factory Method使一個(gè)設(shè)計(jì)可以定制且只略微有一些復(fù)雜。其他設(shè)計(jì)模式需要新的類,而Factory Method只需要一個(gè)新的操作。人們通常將Factory Method作為一種標(biāo)準(zhǔn)的創(chuàng)建對(duì)象的方法。但是當(dāng)被實(shí)例化的類根本不發(fā)生變化或當(dāng)實(shí)例化出現(xiàn)在子類可以很容易重定義的操作中(比如在初始化操作中)時(shí),這就并不必要了。

如果需要將構(gòu)建產(chǎn)品的代碼分離出來,工廠方法可以作為第一步的選擇。如果不需要改變實(shí)例化的類型,或者該類型變化可以和動(dòng)作的多態(tài)同步,也就沒有必要將構(gòu)建產(chǎn)品的部分獨(dú)立出來了。

使用Abstract Factory、Prototype或Builder的設(shè)計(jì)甚至比使用Factory Method的那些設(shè)計(jì)更靈活,但它們也更加復(fù)雜。通常,設(shè)計(jì)以使用Factory Method開始,并且當(dāng)設(shè)計(jì)者發(fā)現(xiàn)需要更大的靈活性時(shí),設(shè)計(jì)便會(huì)向其他創(chuàng)建型模式演化。當(dāng)你在設(shè)計(jì)標(biāo)準(zhǔn)之間進(jìn)行權(quán)衡的時(shí)候,了解多個(gè)模式可以給你提供更多的選擇余地。

更獨(dú)立的類意味著更大的靈活性,但同時(shí)也意味著更復(fù)雜的設(shè)計(jì)。這是考驗(yàn)的是設(shè)計(jì)者選擇的能力,平衡的感覺。當(dāng)然了作為選擇和平衡的前提,你得先知道有哪些可有的設(shè)計(jì)模式。

感謝各位的閱讀,以上就是“web創(chuàng)建型模式的相關(guān)知識(shí)點(diǎn)有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)web創(chuàng)建型模式的相關(guān)知識(shí)點(diǎn)有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

本文名稱:web創(chuàng)建型模式的相關(guān)知識(shí)點(diǎn)有哪些
文章出自:http://bm7419.com/article14/gigjde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷網(wǎng)頁設(shè)計(jì)公司、云服務(wù)器用戶體驗(yàn)、自適應(yīng)網(wǎng)站

廣告

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

綿陽服務(wù)器托管