美文网首页
适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)

作者: 贝贝ovo | 来源:发表于2019-09-26 15:03 被阅读0次

1. 介绍

1.1 定义

将一个类的接口转换成客户期望的另一个接口

应用实例: 电源适配器

1.2 主要作用

使原本接口不兼容的类可以一起工作

1.3 形式

适配器模式的形式分为:类的适配器模式 & 对象的适配器模式

2.模式原理

image.png
public interface Target {
    void request();
}

public class ConcreteTarget implements Target {
    @Override
    public void request() {
        System.out.println("concreteTarget现有目标方法");
    }
}

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

2.1类的适配器模式

继承Adaptee 被适配者

public class Adapter extends Adaptee implements Target {
    @Override
    public void request() {
        //...
        super.adapteeRequest();
        //...
    }
}

2.2对象的适配器模式

组合Adaptee 被适配者

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

    @Override
    public void request() {
        //...
        adaptee.adapteeRequest();
        //...
    }
}

客户端调用

public class Test {
    public static void main(String[] args) {
        Target target = new ConcreteTarget();
        target.request();

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

结果输出

concreteTarget目标方法
被适配者的方法

3.实例讲解

接下来我用一个实例来对代理模式进行更深一步的介绍。
实例概况 220v交流电通过电源适配器输出5v直流电

步骤1:创建Target 接口 5v直流电
public interface DC5 {
    int outputDC5V();
}
步骤2:创建Adaptee被适配者 220v交流电
public class AC220 {
    public int outputAC220V(){
        int output = 220;
        System.out.println("输出交流电"+output+"V");
        return output;
    }
}
步骤3:创建Adapter 电源适配器
//使用对象的适配器模式
public class PowerAdapter implements DC5{
    private AC220 ac220 = new AC220();

    @Override
    public int outputDC5V() {
        int adapterInput = ac220.outputAC220V();
        //变压器...
        int adapterOutput = adapterInput/44;

        System.out.println("使用PowerAdapter输入AC:"+adapterInput+"V"+"输出DC:"+adapterOutput+"V");
        return adapterOutput;
    }
}
步骤4:客户端调用
public class Test {
    public static void main(String[] args) {
        DC5 dc5 = new PowerAdapter();
        dc5.outputDC5V();
    }
}

结果输出

输出交流电220V
使用PowerAdapter输入AC:220V  输出DC:5V

4.优缺点

相关文章

网友评论

      本文标题:适配器模式(Adapter Pattern)

      本文链接:https://www.haomeiwen.com/subject/cyzguctx.html