1 定義:
???? 將兩個不兼容的類糾合在一起使用,屬于結構型模式,需要有被適配者(Adaptee)和適配器(Adapor)兩個身份。
2 為何使用:
??? 我們經常需要將兩上沒有關系的類組合在一起使用,第一解決方案是修改各自類的接口,便如沒有源代碼,或者我們不愿意為一個應用而修改接口怎么辦,就用Adapter創建混血的組合體。
至于怎么用可以參考?《think in java》的“類再生”這一節所提到的兩個方式:組合(Composition)和繼承(inheritance)
參考例子:
package com.pdw.pattern;
/**
?* 兩個不兼容的類糾合在一起使用,屬于結構模型,需有被適配器(Adaptee)和適配器(Adaptor)兩個身份
?*
?* @author Administrator
?*
?*/
//打方型
class SquarePeg{
?public void insert(String str){
??System.out.println("打方型-->"+str);
?}
}
//打圓柱型
class RoundPeg{
?public void insertIntohole(String msg){
??System.out.println("打圓柱型-->"+msg);
?}
}
class PegAdapter extends SquarePeg{
?private RoundPeg rp;
?public PegAdapter(RoundPeg vrp){
??this.rp=vrp;
?}
?public void insertRound(String str){
??rp.insertIntohole(str);
?}
?public void insertSquare(String str){
??super.insert(str);
?}
}
public class AdapterImpl {
?
?
?/**
? * @param args
? */
?public static void main(String[] args) {
??RoundPeg rp=new RoundPeg();
??PegAdapter pg=new PegAdapter(rp);
??pg.insertRound("圓柱型");
??pg.insertSquare("方型");
?}
}