适配器模式,so easy

Posted faink

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适配器模式,so easy相关的知识,希望对你有一定的参考价值。

适配器模式

概述

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

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

话不多说,看代码

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

  • 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的主要内容,如果未能解决你的问题,请参考以下文章

一文搞明白分布式事务解决方案,真的 so easy

Kaggle—So Easy!百行代码实现排名Top 5%的图像分类比赛

递归原来可以so easy|-连载

需要从寻呼机适配器识别当前视图片段

让其他进程当小兵,Java调用命令行,so easy

freopen及其拓展函数,大数据调试so easy (? ?_?)?