《軟件設(shè)計模式(Java版)》課件 第04章 結(jié)構(gòu)型模式(上)_第1頁
《軟件設(shè)計模式(Java版)》課件 第04章 結(jié)構(gòu)型模式(上)_第2頁
《軟件設(shè)計模式(Java版)》課件 第04章 結(jié)構(gòu)型模式(上)_第3頁
《軟件設(shè)計模式(Java版)》課件 第04章 結(jié)構(gòu)型模式(上)_第4頁
《軟件設(shè)計模式(Java版)》課件 第04章 結(jié)構(gòu)型模式(上)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章結(jié)構(gòu)型模式(上)內(nèi)容簡介?本章教學(xué)目標(biāo):

了解結(jié)構(gòu)型模式的特點與分類;

理解代理模式、適配器模式、橋接模式的定義與特點;

掌握代理模式、適配器模式、橋接模式的結(jié)構(gòu)與實現(xiàn);學(xué)會使用這三種設(shè)計模式開發(fā)應(yīng)用程序;明白這三種設(shè)計模式的擴(kuò)展應(yīng)用。?本章價值引領(lǐng):

用代理模式實例提升學(xué)生為社會主義新農(nóng)村建設(shè)盡一份力的責(zé)任感;

用適配器模式實例說明創(chuàng)新精神對實現(xiàn)科技強國的重要性;

用橋接模式實例說明加強品牌建設(shè)對擴(kuò)大內(nèi)需和提升產(chǎn)品國際競爭力的作用。軟件設(shè)計模式(Java版)、作者:程細(xì)柱ISBN:978-7-115-47788-0人民郵電出版社(和)4.1結(jié)構(gòu)型模式概述結(jié)構(gòu)型模式描述如何將類或?qū)ο蟀茨撤N布局組成更大的結(jié)構(gòu)。它分為類結(jié)構(gòu)型模式和對象結(jié)構(gòu)型模式,前者采用繼承機(jī)制來組織接口和類,后者采用組合或聚合來組織對象。由于組合關(guān)系或聚合關(guān)系比繼承關(guān)系耦合度低,滿足“合成復(fù)用原則”,所以對象結(jié)構(gòu)型模式比類結(jié)構(gòu)型模式具有更大的靈活性。結(jié)構(gòu)型模式分為以下7種:⑴代理(Proxy)模式:為某對象提供一種代理以控制對該對象的訪問。即客戶端通過代理間接地訪問該對象,從而限制、增強或修改該對象的一些特性。⑵適配器(Adapter)模式:將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。⑶橋接(Bridge)模式:將抽象與實現(xiàn)分離,使他們可以獨立的變化。它是用組合關(guān)系代替繼承關(guān)系來實現(xiàn),從而降低了抽象和實現(xiàn)這2個可變維度的耦合度。軟件設(shè)計模式(Java版)、作者:程細(xì)柱ISBN:978-7-115-47788-0人民郵電出版社(和)4.1結(jié)構(gòu)型模式概述(續(xù))

⑷裝飾(Decorator)模式:動態(tài)的給對象增加一些職責(zé),即增加其額外的功能。⑸外觀(Facade)模式:為多個復(fù)雜的子系統(tǒng)提供一個一致的接口,使這些子系統(tǒng)更加容易被訪問。⑹享元(Flyweight)模式:運用共享技術(shù)來有效地支持大量細(xì)粒度對象的復(fù)用。⑺組合(Composite)模式:將對象組合成樹狀層次結(jié)構(gòu),使用戶對單個對象和組合對象具有一致的訪問性。以上7種結(jié)構(gòu)型模式,除了適配器模式分為類結(jié)構(gòu)型模式和對象結(jié)構(gòu)型模式2種,其他的全部屬于對象結(jié)構(gòu)型模式。軟件設(shè)計模式(Java版)(ISDN:9787564740634)、作者:程細(xì)柱人民郵電出版社()ISBN:978-7-115-47788-04.2代理(Proxy)模式4.2.1模式的定義與特點

定義:由于某些原因需要給某對象提供一個代理以控制對該對象的訪問。這時,訪問對象不適合或者不能直接引用目標(biāo)對象,代理對象作為訪問對象和目標(biāo)對象之間的中介。

優(yōu)點:1)代理模式在客戶端與目標(biāo)對象之間起到一個中介作用和保護(hù)目標(biāo)對象的作用;2)代理對象可以擴(kuò)展目標(biāo)對象的功能;3)代理模式能將客戶端與目標(biāo)對象分離,在一定程度上降低了系統(tǒng)的耦合度。缺點:1)在客戶端和目標(biāo)對象增加一個代理對象,會造成請求處理速度變慢;2)增加了系統(tǒng)的復(fù)雜度。軟件設(shè)計模式(Java版)、作者:程細(xì)柱ISBN:978-7-115-47788-0人民郵電出版社(和)4.2代理(Proxy)模式(續(xù))4.2.2模式的結(jié)構(gòu)與實現(xiàn)

1.模式的結(jié)構(gòu)代理模式的主要角色有:⑴抽象主題(Subject)類:通過接口或抽象類聲明真實主題和代理對象實現(xiàn)的業(yè)務(wù)方法。⑵真實主題(RealSubject)類:實現(xiàn)了抽象主題中的具體業(yè)務(wù),是代理對象所代表的真實對象,是我們最終要引用的對象。⑶代理(Proxy)類:提供了與真實主題相同的接口,其內(nèi)部含有對真實主題的引用,它可以訪問或控制或擴(kuò)展真實主題的功能。其結(jié)構(gòu)圖如下:軟件設(shè)計模式(Java版)、作者:程細(xì)柱ISBN:978-7-115-47788-0人民郵電出版社(和)4.2代理(Proxy)模式(續(xù))4.2.2模式的結(jié)構(gòu)與實現(xiàn)

1.模式的結(jié)構(gòu)(續(xù)):

結(jié)構(gòu)圖如右:

2.模式的實現(xiàn)

//實現(xiàn)代碼見附件軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話學(xué)資源網(wǎng)址:/book/details/84024.2代理(Proxy)模式(續(xù))4.2.3模式的應(yīng)用實例

【例4.1】韶關(guān)“天街e角”商店是婺源特產(chǎn)公司的代理商,用代理模式實現(xiàn)。

分析:Specialty(特產(chǎn)公司)是抽象主題,WySpecialty(婺源特產(chǎn)公司)是真實主題,經(jīng)營許多婺源特產(chǎn),韶關(guān)“天街e角”的SgProxy代理類,右邊是其結(jié)構(gòu)圖:

注:程序代碼見附件。軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話學(xué)資源網(wǎng)址:/book/details/84024.2代理(Proxy)模式(續(xù))4.2.3模式的應(yīng)用實例

【例4.1】韶關(guān)“天街e角”商店是婺源特產(chǎn)公司的代理商,用代理模式實現(xiàn)。

右邊是程序的運行結(jié)果:軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話學(xué)資源網(wǎng)址:/book/details/84024.2代理(Proxy)模式(續(xù))4.2.4模式的應(yīng)用場景1)遠(yuǎn)程代理,這種方式通常是為了隱藏目標(biāo)對象存在于不同地址空間的事實,方便客戶端訪問。例如用戶申請某些網(wǎng)盤空間時,會在用戶的文件系統(tǒng)中建立一個虛擬的硬盤,用戶訪問它實際訪問的是網(wǎng)盤空間。2)虛擬代理,這種方式通常用于要創(chuàng)建的目標(biāo)對象開銷很大時。比如下載一幅很大的圖像需要很長時間,因某種計算比較復(fù)雜而短時間無法完成,這時可以先用小比例的虛擬代理替換真實的對象,消除用戶對服務(wù)器慢的感覺。3)安全代理,這種方式通常用于控制不同種類客戶對真實對象的訪問權(quán)限。4)智能指引,主要用于當(dāng)調(diào)用目標(biāo)對象時,代理附加一些額外的處理功能。比如增加計算真實對象的引用次數(shù)的功能,這樣當(dāng)該對象沒有引用時,就可以自動釋放它。

5)延遲加載,指為了提高系統(tǒng)的性能,延遲對目標(biāo)的加載。例如,Hibernate中就存在屬性的延遲加載和關(guān)聯(lián)表的延時加載。軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話學(xué)資源網(wǎng)址:/book/details/84024.2代理(Proxy)模式(續(xù))4.2.5模式的擴(kuò)展前面介紹是靜態(tài)代理模式,存在兩個缺點:1)真實主題與代理主題一一對應(yīng),增加真實主題也要增加代理;2)設(shè)計代理以前真實主題必須事先存在,不太靈活。而采用動態(tài)代理模式可以解決以上問題?!纠?.2】應(yīng)用動態(tài)代理技術(shù)設(shè)計一個用戶身份介紹的程序?qū)嵗F浣Y(jié)構(gòu)圖如右://注:程序代碼見附件。軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.3適配器(Adapter)模式4.3.1模式的定義與特點

定義:將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。適配器模式分為類結(jié)構(gòu)型模式和對象結(jié)構(gòu)型模式2種。

優(yōu)點:

1)客戶端通過適配器可以透明地調(diào)用目標(biāo)接口;2)程序員不需要修改原有代碼而重用現(xiàn)有的適配者類;3)將目標(biāo)類和適配者類解耦,解決了目標(biāo)類和適配者類接口不一致的問題。

缺點:對于類適配器來說,更換適配器的實現(xiàn)過程比較復(fù)雜。軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.3適配器(Adapter)模式(續(xù))4.3.2模式的結(jié)構(gòu)與實現(xiàn)

1.模式的結(jié)構(gòu)適配器模式包含以下主要角色:⑴目標(biāo)(Target)接口:當(dāng)前系統(tǒng)業(yè)務(wù)所期待的接口,它可以是抽象類或接口。⑵適配者(Adaptee)類:是被訪問和適配的現(xiàn)存組件庫中的組件接口。⑶適配器(Adapter)類:它一個轉(zhuǎn)換器,通過繼承或引用適配者的對象,把適配者接口轉(zhuǎn)換成目標(biāo)接口,讓客戶按目標(biāo)接口的格式訪問適配者。適配器模式分為:類適配器模式和對象適配器模式2種。軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.3適配器(Adapter)模式(續(xù))a.類適配器模式:其實現(xiàn)代碼見附件,結(jié)構(gòu)圖如下:軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.3適配器(Adapter)模式(續(xù))b.對象適配器模式:其實現(xiàn)代碼見附件,結(jié)構(gòu)圖如下:軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.3適配器(Adapter)模式(續(xù))4.3.3模式的應(yīng)用實例

【例4.3】用對象適配器模式模擬新能源汽車的發(fā)動機(jī)設(shè)計。

分析:新能源汽車的發(fā)動機(jī)有電能發(fā)動機(jī)和光能發(fā)動機(jī)等,各種發(fā)動機(jī)的驅(qū)動方法不同,客戶端希望用統(tǒng)一的發(fā)動機(jī)驅(qū)動方法drive()訪問這兩種發(fā)動機(jī),所以要為這些發(fā)動機(jī)定義適配器,右邊是其結(jié)構(gòu)圖:

注:程序代碼見附件軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.3適配器(Adapter)模式(續(xù))4.3.4模式的應(yīng)用場景適配器模式通常適用以下場景:1)以前開發(fā)的系統(tǒng)存在滿足新系統(tǒng)功能需求的類,但其接口同新系統(tǒng)的接口不一致。2)使用第三方提供的組件,但組件接口定義和自己要求的接口定義不同。軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.3適配器(Adapter)模式(續(xù))4.3.5模式的擴(kuò)展適配器模式可擴(kuò)展為雙向適配器模式,雙向適配器類既可以把適配者接口轉(zhuǎn)換成目標(biāo)接口,也可以把目標(biāo)接口轉(zhuǎn)換成適配者接口,右邊是其結(jié)構(gòu)圖:注:程序代碼見附件軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.4橋接(Bridge)模式4.4.1模式的定義與特點

定義:將抽象與實現(xiàn)分離,使他們可以獨立的變化。它是用組合關(guān)系代替繼承關(guān)系來實現(xiàn),用于多個維度變化的實例,如圖形既可按形狀分,又可按顏色分。

優(yōu)點:

1)由于抽象與實現(xiàn)分離,所以擴(kuò)展能力強;2)其實現(xiàn)細(xì)節(jié)對客戶透明。

缺點:由于聚合關(guān)系建立在抽象層,要求開發(fā)者針對抽象化進(jìn)行設(shè)計與編程,這增加了系統(tǒng)的理解與設(shè)計難度。軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.4橋接(Bridge)模式(續(xù))4.4.2模式的結(jié)構(gòu)與實現(xiàn)

1.模式的結(jié)構(gòu)橋接模式包含以下主要角色:(1)抽象類(Abstraction):又稱為抽象化角色,定義一個包含對實現(xiàn)者引用的抽象類。

(2)擴(kuò)展抽象類(RefinedAbstraction):又稱為擴(kuò)展抽象化角色,是抽象類的子類,實現(xiàn)抽象類中的業(yè)務(wù)方法,并通過聚合關(guān)系調(diào)用實現(xiàn)者中的業(yè)務(wù)方法。

(3)實現(xiàn)者接口(Implementor):又稱為實現(xiàn)化角色,是具體實現(xiàn)者的接口,供擴(kuò)展抽象類調(diào)用。

(4)具體實現(xiàn)者類(ConcreteImplementor):又稱為具體實現(xiàn)化角色,是實現(xiàn)者接口的具體實現(xiàn)。軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.4橋接(Bridge)模式(續(xù))4.4.2模式的結(jié)構(gòu)與實現(xiàn)

1.模式的結(jié)構(gòu)(續(xù)):

結(jié)構(gòu)圖如右:

2.模式的實現(xiàn)

//實現(xiàn)代碼見附件軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.4橋接(Bridge)模式(續(xù))4.4.3模式的應(yīng)用實例

【例4.4】用橋接模式模擬女士皮包的選購和設(shè)計。

分析:女士皮包有很多種,可以按用途分、按皮質(zhì)分、按品牌分、按顏色分、按大小分等,存在多個維度的變化,所以采用橋接模式來實現(xiàn)女士皮包的選購比較合適。本實例按用途分可選錢包(Wallet)和挎包(HandBag),按顏色分可選黃色(Yellow)和紅色(Red),右邊是其結(jié)構(gòu)圖:

注:程序代碼見附件。軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.4橋接(Bridge)模式(續(xù))4.4.3模式的應(yīng)用實例

【例4.4】用橋接模式模擬女士皮包的選購。

右邊是程序的運行結(jié)果:軟件設(shè)計模式(Java版)、作者:程細(xì)柱銷售電話民郵電出版社(和)4.4

溫馨提示

  • 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

提交評論