Android之大話設(shè)計(jì)模式第五章原型模式_第1頁(yè)
Android之大話設(shè)計(jì)模式第五章原型模式_第2頁(yè)
Android之大話設(shè)計(jì)模式第五章原型模式_第3頁(yè)
Android之大話設(shè)計(jì)模式第五章原型模式_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——Android之大話設(shè)計(jì)模式第五章原型模式

原型模式深入分析:

原型模式的工作原理是:通過(guò)將一個(gè)原型對(duì)象傳給那個(gè)要發(fā)動(dòng)創(chuàng)立的對(duì)象,這個(gè)要發(fā)動(dòng)創(chuàng)立的對(duì)象通過(guò)請(qǐng)求原型對(duì)象拷貝它們自己來(lái)實(shí)施創(chuàng)立。

Java在語(yǔ)言級(jí)別是直接支持原型模式的。我們知道,在ng.Object是一切類和接口的父類,而ng.Object正好提供了一個(gè)clone()方法來(lái)支持原型模式。當(dāng)然,一個(gè)對(duì)象假使想具有被復(fù)制的能力,還必需聲明自己實(shí)現(xiàn)了Cloneable接口,假使沒(méi)有聲明,就會(huì)在對(duì)象被復(fù)制的時(shí)候拋出CloneNotSupportedException.

在ng.Object中提供了一個(gè)protectedObjectclone()方法來(lái)支持對(duì)象的克隆,子類可以采用默認(rèn)的方式進(jìn)行所有字段的復(fù)制,也可以在子類中覆蓋clone()便利,根據(jù)實(shí)際需要定制自己的復(fù)制行為。

復(fù)制淺復(fù)制和深復(fù)制之分,淺復(fù)制是對(duì)基本數(shù)據(jù)類型和String類型而言的,深復(fù)制是對(duì)其他引用類型而言的。對(duì)于深復(fù)制,每一個(gè)應(yīng)用也需要聲明Cloneable接口。

原型模式使用場(chǎng)景分析及代碼實(shí)現(xiàn):

在上面的使用場(chǎng)景中,由于GG打字太慢經(jīng)常被女朋友怪罪,所以有了拷貝網(wǎng)上肉麻情話的和主要閑聊話題內(nèi)容的方法。這樣,以后GG每次和MM閑聊的時(shí)候只需要把原話拷貝出來(lái),加以適當(dāng)修改就行,省時(shí)省力,而且效果絕佳^_^,這就是設(shè)計(jì)模式的原型模式的使用的好處O(∩_∩)O~

UML模型圖如下所示:

建立一個(gè)肉麻情話類,類中有十分詳細(xì)的解釋,這里就不在解釋了:

publicListStringgetContents(){returncontents;}/**設(shè)置肉麻情話集合*/publicvoidsetContents(ListStringcontents){this.contents=contents;}

/**獲取肉麻情話*/publicStringgetContent(){returncontent;}/**設(shè)置肉麻情話*/publicvoidsetContent(Stringcontent){this.content=content;}

/**肉麻情話覆蓋了Object類的clone()方法,由于這里有List引用進(jìn)行深度復(fù)制*@seeng.Object#clone()*/publicSweetWordclone(){

最終我們建立測(cè)試客戶端:

輸出的結(jié)果如下:

原型模式的優(yōu)缺點(diǎn)分析:

優(yōu)點(diǎn):

1.允許動(dòng)態(tài)地增加或減少產(chǎn)品類。由于創(chuàng)立產(chǎn)品類實(shí)例的方法是產(chǎn)品類內(nèi)部具有的,因此增加新產(chǎn)品對(duì)整個(gè)結(jié)構(gòu)沒(méi)有影響。

2.提供簡(jiǎn)化的創(chuàng)立結(jié)構(gòu)。

3.具有給一個(gè)應(yīng)用軟件動(dòng)態(tài)加載新功能的能力。

4.產(chǎn)品類不需要非得有任何事先確定的等級(jí)結(jié)構(gòu),由于原型模式適用于任何的等級(jí)結(jié)構(gòu)。缺點(diǎn):

每一個(gè)類都必需配備一個(gè)克隆方法,這對(duì)于全新的類來(lái)說(shuō)不是很難,而對(duì)已有的類來(lái)說(shuō)實(shí)現(xiàn)

clone()方法不一定很簡(jiǎn)單,而且在進(jìn)行比較深層次的復(fù)制的時(shí)候也需要編寫(xiě)一定工作量的代碼原型模式的實(shí)際應(yīng)用簡(jiǎn)介:

原型對(duì)象一般在適用于一下場(chǎng)景:

在創(chuàng)立對(duì)象的時(shí)候,我們不僅希望被創(chuàng)立的對(duì)象繼承其類的基本機(jī)構(gòu),而且還希望繼承原型對(duì)象的數(shù)據(jù)。

希望對(duì)目標(biāo)對(duì)象的修改不影響既有的原型對(duì)象(深度克隆的時(shí)候可以完全互不影響)。隱蔽克隆操作的細(xì)節(jié)。好多時(shí)候,對(duì)對(duì)象本身的克隆需要涉及到類本身的數(shù)據(jù)細(xì)節(jié)。

溫馨提醒:

由于使用原型模式的時(shí)候每個(gè)類都要具備克隆方法。假使在類的設(shè)計(jì)之初沒(méi)有很好的規(guī)劃,等使用很久了才想到克隆,就可能十分的麻煩,特別是在設(shè)計(jì)到深層次復(fù)制的時(shí)候,由于此時(shí)牽扯到好多因素,而且工作量十分大。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論