設(shè)計模式之單例原型和抽象工廠模式_第1頁
設(shè)計模式之單例原型和抽象工廠模式_第2頁
設(shè)計模式之單例原型和抽象工廠模式_第3頁
設(shè)計模式之單例原型和抽象工廠模式_第4頁
設(shè)計模式之單例原型和抽象工廠模式_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、創(chuàng)建者模式創(chuàng)建者模式定義:將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示,而且客戶端不知道對象的構(gòu)建細(xì)節(jié)。原理:創(chuàng)建者模式主要由5各部分組成:組裝類、抽象創(chuàng)建者類、實現(xiàn)抽象創(chuàng)建者類的的具體創(chuàng)建類、抽象產(chǎn)品類和實現(xiàn)抽象產(chǎn)品類的具體產(chǎn)品類。創(chuàng)建者模式的示意圖舉例說明: 在創(chuàng)建摩托車組裝系統(tǒng)時,可以引擎、摩托車車架、摩托車車輪、摩托車車胎均創(chuàng)建為抽象類,針對摩托車的組裝設(shè)計一個操作抽象類。 在應(yīng)用于具體某一型號的摩托車組裝時,將以上各自抽象類具體實現(xiàn),設(shè)計出相應(yīng)具體的產(chǎn)品類型。 而在整體產(chǎn)品的組裝上面,我們不采用抽象工廠模式將具體組裝放在客戶端的實現(xiàn)上,而是設(shè)計單獨的組裝抽

2、象類,工廠類只負(fù)責(zé)創(chuàng)建。在客戶端我們只需要實現(xiàn)工廠的具體類型,由具體的工廠來調(diào)用組裝方法即可。 這樣做的優(yōu)點在于既在產(chǎn)品優(yōu)化改進(jìn)時,方便系統(tǒng)的修改,同時降低了系統(tǒng)對于用戶所展現(xiàn)的細(xì)節(jié),可在一定程度上保證系統(tǒng)的安全性。優(yōu)點:客戶端不再負(fù)責(zé)對象的創(chuàng)建和組裝,而是把這個創(chuàng)建的責(zé)任交給具體的創(chuàng)建者類,把組裝的責(zé)任交給組裝類,客戶端只負(fù)責(zé)對象的調(diào)用,從而明確了各個類的職責(zé)。缺點:雖然利用創(chuàng)建者模式可以創(chuàng)建不同的類型的產(chǎn)品,但如果產(chǎn)品間的差異非常大,則需要編寫多個創(chuàng)建者類才能實現(xiàn),這時如果結(jié)合工廠模式更好。原型模式定義:通過一個原型對象來表明要創(chuàng)建的對象類型, 然后用復(fù)制這個原型對象的方法來創(chuàng)建更多同類型

3、的對象。原理: 主要由兩部分組成:抽象原型和具體原型類原型模式的原理圖:銅鑰匙的顏色:黃色鋁鑰匙的顏色:銀色銅鑰匙的顏色:黃色鋁鑰匙的顏色:銀色示例原理圖示例輸出結(jié)果以上為以配鑰匙為例來說明原型模式圖解示例: 首先我們創(chuàng)建一個實現(xiàn)了Cloneable的原型抽象類KeyPrototype,該類重寫Cloneable的clone方法;然后我們分別建立繼承該抽象類的CopperKey類與Aluminiumkey類。 最后在客戶的實際操作類Client中,我們先實例化CopperKey類(或者Aluminiumkey類)然后,在實例化另一個類時,可利用第一個類的對象,使用其clone方法得到第一個對象

4、的復(fù)制,然后在該復(fù)制對象上使用相應(yīng)方法即可實現(xiàn)與在新創(chuàng)建的實例對象上進(jìn)行操作相同的結(jié)果,同時不改變原來對象的屬性。Java中的淺度克隆與深度克?。篈、淺度克隆后的副本對象與源對象共享類中組合進(jìn)來的對象,而深度克隆后的 對象與源對象完全脫離關(guān)系,沒有共享成分,即類中組合的對象也被克隆。B、淺度克隆只進(jìn)行當(dāng)前層對象變量值的復(fù)制,而深度克隆則可以克隆對象結(jié)構(gòu)表 中的所有層的變量值。C、深度克隆的原理:將對象變量的值及引用型對象變量的值全部寫進(jìn)輸出流中, 再將輸入流中的值讀進(jìn)內(nèi)存重構(gòu)出對象(Object),在將該對象強(qiáng)轉(zhuǎn)為具體對象時 將按照該對象類中定義的結(jié)構(gòu)樹進(jìn)行再次重構(gòu)出該對象,在此過程中對象的變

5、量 將按照讀進(jìn)內(nèi)存的字段值進(jìn)行重新初始化。優(yōu)點:可以動態(tài)地添加產(chǎn)品類,而且對整體結(jié)構(gòu)沒有影響缺點:由于原型模式需要給每一個類都配備一個克隆的方法,這就需要在設(shè)計類時通盤考慮,因為在已有類上添加clone操作是比較困難的;而且原型模式在實現(xiàn)深層次的復(fù)制時,需要編寫一定量的代碼單例模式單例模式的原理圖:如圖,該類的getInstance方法返回一個私有的該類型的對象單例模式的要點有三個; 一、某個類只能有一個實例; 二、它必須自行創(chuàng)建這個實例; 三、它必須自行向整個系統(tǒng)提供這個實例。從具體實現(xiàn)角度來說,就是以下三點: 一、單例模式的類只提供私有的構(gòu)造函數(shù), 二、類定義中含有一個該類的靜態(tài)私有對象, 三、該類提供了一個靜態(tài)的公有的函數(shù)用于 創(chuàng)建或獲取它本身的靜態(tài)私有對象。單例模式類型:優(yōu)點:在單例模式中,客戶調(diào)用類的實例時,只能調(diào)用一個公共的接口,這就為整個開發(fā)團(tuán)隊提供了一個共享的概念。缺點:實現(xiàn)單例模式的類在實例化后,不能被別的類繼承;在分布式系統(tǒng)中,

溫馨提示

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

評論

0/150

提交評論