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类图:

 

 

 

 

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