天天看小說

第24章

大B:“我還是跟你講講類適配器和對象適配器吧!舉些例子,這樣你就明白了。”

小A:“好!”

大B:“要正確地區別這兩種適配器的區別,我們還是從一個簡單的例子開始吧!我們的系統中有一個具有某個特定功能的類Adaptee,一個客戶類Client——他需要一個實現Target接口的對象,和一個Target接口。”以下是它們的源碼:

//Adaptee.java

publicclassAdaptee{

publicvoidspecialRequest(){

System.out.println(“CalledSpecificRequest()inAdaptee”);

}

}

//Client.java

publicclassClient{

publicstaticvoidmain(String[]args){

Targett=……//newAdapter();

t.request();

}

}

//Target.java

publicinterfaceTarget{

publicvoidrequest();

}

“根據上面的分析我們知道此時需要一個Adapter對象,該對象實現Target接口,同時它又重用現有的Adaptee類。任何有一點點OO(面向對象)知識的人都會想到通過繼承可以達到重用的目的。”

下面是通過繼承實現Adaptee類重用的例子:

//Adapter.java

publicclassAdapterextendsAdapteeimplementsTarget{

publicvoidrequest(){

this.specialRequest();

}

}

大B:“看,簡單明瞭吧!現在的過程就是:客戶調用Target接口的request方法,實際就是調用其父類Adaptee的specialRequest方法。”

小A:“嘿嘿!這樣一說倒真的是簡單喔!”

大B:“對啊!這就是大家通常常說的類的適配器!類適配器具有以下的兩個特點:1、適配器類(Adapter)實現Target接口;2、適配器類(Adapter)通過繼承來實現對Adaptee類的重用。”

下面是一個通過組合關係實現繼承的例子,以下是源碼:

//Adapter.java

publicclassAdapterimplementsTarget{

Adapteeadaptee=newAdaptee();

publicvoidrequest(){

adaptee.specialRequest();

}

}

對於這兩者不同的適配器客戶代碼其實是完全一樣的。以下是客戶的代碼:

//Client.java

publicclassClient{

publicstaticvoidmain(String[]args){

Targett=newAdapter();

t.request();

}

}

大B:“現在可是全明白了吧?”

小A:“嘿嘿!現在都懂了。”

第95章第119章第35章第14章第47章第176章第186章第194章第76章第119章第131章第69章第73章第67章第166章第90章第219章第52章第16章第139章第186章第219章第140章第221章第28章第77章第52章第44章第58章第29章第187章第54章第215章第19章第140章第158章第210章第85章第87章第14章第221章第160章第158章第76章第3章第7章第74章第75章第94章第34章第143章第96章第48章第97章第33章第171章第45章第22章第118章第192章第92章第92章第14章第43章第1章第97章第191章第134章第130章第43章第6章第167章第98章第42章第135章第151章第94章第30章第207章第192章第148章第35章第167章第205章第124章第144章第93章第75章第215章第60章第66章第203章第3章第122章第109章第141章第24章第161章第82章第103章
第95章第119章第35章第14章第47章第176章第186章第194章第76章第119章第131章第69章第73章第67章第166章第90章第219章第52章第16章第139章第186章第219章第140章第221章第28章第77章第52章第44章第58章第29章第187章第54章第215章第19章第140章第158章第210章第85章第87章第14章第221章第160章第158章第76章第3章第7章第74章第75章第94章第34章第143章第96章第48章第97章第33章第171章第45章第22章第118章第192章第92章第92章第14章第43章第1章第97章第191章第134章第130章第43章第6章第167章第98章第42章第135章第151章第94章第30章第207章第192章第148章第35章第167章第205章第124章第144章第93章第75章第215章第60章第66章第203章第3章第122章第109章第141章第24章第161章第82章第103章
主站蜘蛛池模板: 兴安盟| 两当县| 合山市| 应城市| 盐亭县| 胶州市| 浑源县| 玉林市| 桑日县| 永嘉县| 绍兴市| 南安市| 龙口市| 涟源市| 南城县| 兰考县| 昌平区| 宝应县| 阜阳市| 东兰县| 六盘水市| 寻甸| 许昌市| 铁岭县| 新巴尔虎右旗| 台山市| 哈巴河县| 山丹县| 扎鲁特旗| 嘉兴市| 微山县| 安西县| 镇宁| 绍兴县| 梧州市| 德保县| 聂拉木县| 深水埗区| 湟中县| 广安市| 沂南县|