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