美文网首页
适配器模式(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