Java設計模式之適配器模式

Java設計模式之適配器模式

適配器模式包括類適配器和對象適配器,下面先看類適配器:

類適配器

public class Adaptee {
    public void adapteeRequest(){
        System.out.println("被適配者的方法");
    }
}


public interface Target {
    void request();
}

//類適配器繼承被適配者,並且實現Target接口
public class Adapter extends Adaptee implements Target {
    @Override
    public void request() {

        //Target接口裏面的方法通過Adapter適配器適配給了被適配者
        super.adapteeRequest();
    }
}

//具體實現類
public class ConcreteTarget implements Target {
    @Override
    public void request() {
        System.out.println("Concrete目標方法");
    }
}

//調用
public static void main(String [] a){
        Target target=new ConcreteTarget();
        target.request();

        Target adapterTarget=new Adapter();
        adapterTarget.request();
    }

//結果
Concrete目標方法
被適配者的方法

此時UML的類圖爲:

對象適配器

下面看看對象適配器,只需修改Adapter類,其他類不需要修改。

public class Adaptee {
    public void adapteeRequest(){
        System.out.println("被適配者的方法");
    }
}


public interface Target {
    void request();
}


public class Adapter implements Target {
    private Adaptee adaptee=new Adaptee();

    @Override
    public void request() {

        //委託給Adaptee實現
        adaptee.adapteeRequest();
    }
}


//具體實現類
public class ConcreteTarget implements Target {
    @Override
    public void request() {
        System.out.println("Concrete目標方法");
    }
}

//調用
public static void main(String [] a){
        Target target=new ConcreteTarget();
        target.request();

        Target adapterTarget=new Adapter();
        adapterTarget.request();
    }

//結果
Concrete目標方法
被適配者的方法

看看此時UML的類圖:

下面來看看家裏的電源適配器,用代碼如何實現:

//首先創建一個類,輸出220V
public class AC220 {
    public int outputAC220V(){
        int output=220;
        System.out.println("輸出交流電"+output+"V");
        return output;
    }
}


//新建接口 輸出5V
public interface DC5 {
    int outputDC5V();
}


//實現接口DC5
public class PowerAdapter implements DC5{

    AC220 ac220=new AC220();

    @Override
    public int outputDC5V() {
        int adapterInput=ac220.outputAC220V();
        int adapterOutput=adapterInput/44;
        System.out.println("使用PowerAdapter將"+adapterInput+"V轉換爲"+adapterOutput+"V");
        return adapterOutput;
    }
}


//調用
 DC5 dc5=new PowerAdapter();
 dc5.outputDC5V();

//結果
輸出交流電220V
使用PowerAdapter將220V轉換爲5V

看看此時的UML類圖:

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章