大B:“我還是跟你講講類適配器和對象適配器吧!舉些例子,這樣你就明白了。”
小A:“好!”
大B:“要正確地區別這兩種適配器的區別,我們還是從一個簡單的例子開始吧!我們的係統中有一個具有某個特定功能的類Adaptee,一個客戶類Client——他需要一個實現Target接口的對象,和一個Target接口。”以下是它們的源碼:
“根據上麵的分析我們知道此時需要一個Adapter對象,該對象實現Target接口,同時它又重用現有的Adaptee類。任何有一點點OO(麵向對象)知識的人都會想到通過繼承可以達到重用的目的。”
下麵是通過繼承實現Adaptee類重用的例子:
大B:“看,簡單明了吧!現在的過程就是:客戶調用Target接口的request方法,實際就是調用其父類Adaptee的specialRequest方法。”
小A:“嘿嘿!這樣一說倒真的是簡單喔!”
大B:“對啊!這就是大家通常常說的類的適配器!類適配器具有以下的兩個特點:1、適配器類(Adapter)實現Target接口;2、適配器類(Adapter)通過繼承來實現對Adaptee類的重用。”
下麵是一個通過組合關係實現繼承的例子,以下是源碼:
對於這兩者不同的適配器客戶代碼其實是完全一樣的。以下是客戶的代碼:
大B:“現在可是全明白了吧?”
小A:“嘿嘿!現在都懂了。”
(本章完)