適配器模式

適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。


優點:適配器可以在不改變原有代碼的情況下讓原本不兼容的類無間合作
缺點:過多的使用適配器,會讓系統變得凌亂

適配器模式分爲類適配器和對象適配器模式!!

一:類適配器

 類的適配器模式把適配的類的API轉換成爲目標類的API。
 
類適配器

/**
 * 類適配模式
 * @author Xul
 *
 */
public class AdapterModel {

    public static void main(String[] args) {
        Target target = new Adapter();
        target.zuofan();
    }
}

/**
 * 目標接口
 * 做飯
 */
interface Target{
    public void zuofan();
}

/**
 * 需要被適配的接口
 */
class Adaptee{
    public void maicai(){
        System.out.println("買菜!!!");
    }
    public void shaoshui(){
        System.out.println("燒水!!!");
    }

    public void zhufan(){
        System.out.println("煮飯!!!");
    }
    public void chaocai(){
        System.out.println("炒菜!!!");
    }
}
/**
 * 適配器
 */
class Adapter extends Adaptee implements Target{
    @Override
    public void zuofan() {
        this.maicai();
        this.shaoshui();
        this.zhufan();
        this.chaocai();
    }
}

二:對象適配器

對象的適配器模式使用委派關係連接到Adaptee類,把被適配的類的API轉換成爲目標類的API
對象適配器

/**
 * 對象適配器模式
 */
public class ObjAdapterModel {
    public static void main(String[] args) {
        ObjAdaptee adaptee = new ObjAdaptee();
        ObjTarget objTarget = new ObjAdapter(adaptee);
        objTarget.zuofan();
    }
}
/**
 * 目標接口
 * 做飯
 */
interface ObjTarget{
    public void zuofan();
}

/**
 * 需要被適配的接口
 */
class ObjAdaptee{
    public void maicai(){
        System.out.println("買菜!!!");
    }
    public void shaoshui(){
        System.out.println("燒水!!!");
    }
    public void zhufan(){
        System.out.println("煮飯!!!");
    }
    public void chaocai(){
        System.out.println("炒菜!!!");
    }
}
/**
 * 適配器
 */
class ObjAdapter  implements ObjTarget{

    ObjAdaptee objAdaptee ;

    public ObjAdapter(ObjAdaptee objAdaptee) {
        this.objAdaptee = objAdaptee;
    }
    @Override
    public void zuofan() {
        objAdaptee.maicai();
        objAdaptee.shaoshui();
        objAdaptee.zhufan();
        objAdaptee.chaocai();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章