码迷,mamicode.com
首页 > 其他好文 > 详细

适配器模式,so easy

时间:2020-07-26 15:47:04      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:使用   dem   dap   算法   ret   一个   his   gad   适配   

适配器模式

概述

使用适配器类让一个对象获得或拥有另一个对象的行为,单向兼容或者双向兼容(相互兼容)。

适配器模式很好理解,就是让本不兼容的对象,用适配器让他们相互兼容。

话不多说,看代码

我举一个数据线接口的例子:

  • Type-C孔
public class TypeC_Hole {
    private String key;//接口协议密钥
    
    //.....构造方法,get、set方法省略
    public boolean fits(TypeC_Line line) {
        boolean isAdapt;
        isAdapt = this.getKey().equals(line.getKey());
        return isAdapt;
    }
}
  • Type-C接口数据线
public class TypeC_Line {
    private String key;//接口协议密钥
    
    //.....构造方法,get、set方法省略
    public String getKey() {
        return key;
    }
}
  • Lightning接口数据线
public class Lightning_Line {
    private String key;//接口协议密钥
    
    //.....构造方法,get、set方法省略
}
  • 适配器类(让Lightning接口兼容Type-C,即Lightning接口可插入Type-C孔)
public class LightningAdapt extends TypeC_Line {
    private Lightning_Line line;
    
    public LightningAdapt(Lightning_Line line) {
        this.line = line;
    } 
    
    public String getKey() {
        String change_key;
        change_key = LightningToTypeC(line.getKey);
        return change_key;
    }
    
    private String LightningToTypeC(String oldkey) {
        //转换接口协议密钥的算法
        return newkey;
    }
}
  • 客户端demo
public class Demo {
    public static void main(String[] args) {
        TypeC_Hole hole = new TypeC_Hole("ack");
        TypeC_Line TCline = new TypeC_Line("ack");
        if (hole.fist(TCline)) {
            System.out.println("TypeC线适配对接TypeC孔成功");
        }
        Lightning_Line Lline = new Lightning("ack2");
        LightningAdapt adapt = new LightningAdapt(Lline);
        if (hole.fist(adapt)) {
            System.out.println("Lightning适配对接TypeC孔成功");
        }
    }
}

优点:

  • 符合单一职责,将接口和转换代码从业务中分离出来
  • 符合开闭原则,修改不会破坏原有代码就能添加其他适配器

缺点:

  • 代码复杂度会增高,有时直接更改类使其兼容会更easy

适配器模式,so easy

标签:使用   dem   dap   算法   ret   一个   his   gad   适配   

原文地址:https://www.cnblogs.com/Faink/p/13379827.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!