資源描述:
《適配器模式深入》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、結(jié)構(gòu)型模式,顧名思義討論的是類和對(duì)象的結(jié)構(gòu),它采用繼承機(jī)制來組合接口或?qū)崿F(xiàn),或者通過組合一些對(duì)象,從而實(shí)現(xiàn)新的功能。GoF23種設(shè)計(jì)模式中的結(jié)構(gòu)型模式有7種,分別是適配器模式(Adapter)、裝飾器模式(Decorator)、代理模式(Proxy)、外觀模式(Facade)、橋接模式(Bridge)、組合模式(Composite)、享元模式(Flyweight)。它們之間的關(guān)系如圖12-1所示。圖12-1?各模式之間的關(guān)系其中對(duì)象的適配器模式是各種模式的起源,是一種比較重要的適配器模式。從箭頭的方向可以看出各個(gè)模式的產(chǎn)生關(guān)系。這7種模式的作用不同,分別如下。????適配器模式(Adapte
2、r):將某個(gè)類的接口轉(zhuǎn)換成客戶端期望的另一個(gè)接口表示。適配器模式可以消除由于接口不匹配所造成的類兼容性問題。????根據(jù)適配對(duì)象的不同,又分為3種類型:???????類的適配器模式:用于對(duì)類進(jìn)行適配。???????對(duì)象的適配器模式:用于對(duì)對(duì)象進(jìn)行包裝。???????接口的適配器模式:用于對(duì)接口抽象化。????裝飾器模式(Decorator):向某個(gè)對(duì)象動(dòng)態(tài)地添加更多的功能。裝飾器模式是除類繼承外另一種擴(kuò)展功能的方法。????代理模式(Proxy):為其他對(duì)象提供一個(gè)代理以控制對(duì)這個(gè)對(duì)象的訪問。????外觀模式(Facade):為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,外觀模式定義了一個(gè)高層接口
3、,這個(gè)接口使得這一子系統(tǒng)更加容易使用。????橋接模式(Bridge):將一個(gè)抽象與實(shí)現(xiàn)解耦,以便兩者可以獨(dú)立的變化。????組合模式(Composite):把多個(gè)對(duì)象組成樹狀結(jié)構(gòu)來表示局部與整體,這樣用戶可以一樣地對(duì)待單個(gè)對(duì)象和對(duì)象的組合。????享元模式(Flyweight):通過共享以便有效地支持大量小顆粒對(duì)象。接下來將對(duì)7種常用結(jié)構(gòu)型模式進(jìn)行比較,并通過經(jīng)典的代表實(shí)例來說明該如何使用各種結(jié)構(gòu)型模式:????適配器模式—Iterator適配器(對(duì)象的適配器模式)、Enumeration適配器(對(duì)象的適配器模式)、AWT事件適配器(接口的適配器模式)、I/O字節(jié)流到字符流的適配器(對(duì)象的
4、適配器模式)。????裝飾器模式—I/O輸入/輸出流管道的裝飾器模式、Sitemesh裝飾器。????代理模式—Java動(dòng)態(tài)代理機(jī)制。????橋接模式—JDBC橋DriverManager。????組合模式—AWT容器Container。????享元模式—數(shù)據(jù)庫連接池。下面來看詳細(xì)的內(nèi)容。12.1?適配器模式(Adapter)下面從以下幾個(gè)方面來詳細(xì)講解適配器模式。????適配器模式的核心思想。????第一種:類的適配器模式(對(duì)類進(jìn)行適配)。????第二種:對(duì)象的適配器模式(對(duì)對(duì)象進(jìn)行包裝)。????第三種:接口的適配器模式(對(duì)接口抽象化)。????何時(shí)使用適配器模式。????Java中的應(yīng)
5、用—Iterator適配器(對(duì)象的適配器模式)。????Java中的應(yīng)用—Enumeration適配器(對(duì)象的適配器模式)。????Java中的應(yīng)用—AWT事件適配器(接口的適配器模式)。????Java中的應(yīng)用—I/O字節(jié)流到字符流的適配器(對(duì)象的適配器模式)。12.1.1?適配器模式的核心思想適配器模式的核心思想:把原有的接口轉(zhuǎn)變成調(diào)用者期待的接口,從而使不同接口的類可以一起工作。適配器中包含如下3個(gè)角色。????源角色Adaptee:需要適配的目標(biāo)類或接口。????目標(biāo)角色Target:所期望得到的接口。????適配器角色Adapter:適配器類是本模式的核心,用來把源接口轉(zhuǎn)換成目標(biāo)接
6、口,顯然這一角色不可以是接口,而必須是具體類。這3者角色之間的交互關(guān)系便組成了適配器模式的模型,如圖12-2所示。Adaptee類只有operation()方法,沒有newoperation()方法,但是客戶端又需要目標(biāo)類同時(shí)擁有這兩個(gè)方法,這時(shí)便可以新建一個(gè)接口Target,并提供一個(gè)中間環(huán)節(jié)Adapter類,Adapter類實(shí)現(xiàn)了Target接口,并繼承自Adaptee,Adapter類的operation()方法重新封裝了Adapter類的operation()方法,并同時(shí)實(shí)現(xiàn)了newoperation()方法,這便實(shí)現(xiàn)了適配的目的。圖12-2?適配器模式的模型適配器也叫做包裝器模式(
7、Wrapper),根據(jù)適配對(duì)象的不同,又可以將適配器模式分為3種子類型。????類的適配器模式:用于對(duì)類進(jìn)行適配。????對(duì)象的適配器模式:用于對(duì)對(duì)象進(jìn)行包裝。????接口的適配器模式:用于對(duì)接口抽象化。下面分別通過實(shí)例的形式來展示這3種模式的使用。12.1.2?第一種:類的適配器模式(對(duì)類進(jìn)行適配)第一種模式是類的適配器模式,它用來對(duì)目標(biāo)類進(jìn)行包裝,如圖12-3所示。????Source類是具體的原始類,是