天天看点

Java设计模式:适配器模式

适配器模式

定义:

将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容不能一起工作的那些类可以一起工作。

应用场景:

系统需要使用现有类,而这些类不符合系统系统的接口。

使用第三方组件,组件接口定义和自己定义不同,不希望修改自己的接口,但是要使用第三方组件接口的功能。

优点:

符合单一职责原则,符合开闭原则。

代码示例:

适配器模式主要分三类:类的适配器模式、对象的适配器模式、接口的适配器模式。

生活当中,手机的电源适配器就是很好的列子。标准电压是220V,二手机可能只需要5V电压就够了,电源适配器就可用将220V电压转成5V电压。

目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。

需要适配的类(Adaptee):需要适配的类或适配者类。

适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

对象的适配器模式:

package com.test;

public class ObjectAdapter {
    public static void main(String[] args) {
        Target target = new Adapter(new Adaptee());
        target.output5v();
    }
}

class Adaptee{
    public int output220v(){
        return 220;
    }
}

interface Target{
    int output5v();
}

class Adapter implements Target{

    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    public int output5v() {
        int output220v = adaptee.output220v();
        System.out.println("原始电压:"+output220v+"---输出电压:"+5);
        return 5;
    }
}
           

类的适配器模式:

package com.test.v;

public class ClassAdapter {
    public static void main(String[] args) {
        Adapter adapter = new Adapter();
        adapter.output5v();
    }
}


class Adaptee{
    public int output220v(){
        return 220;
    }
}

interface Target{
    int output5v();
}

class Adapter extends Adaptee implements Target{
    public int output5v() {
        int output220v = output220v();
        System.out.println("原始电压:"+output220v+"---输出电压:"+5);
        return 5;
    }
}