前言
设计模式系列代码均持续更新在我的gitHub:to github
I. 适配器模式工作原理
- 将一个类的接口转换成另一种接口,让原本接口不相兼容的类可以兼容(例如生活中的USB转外接屏幕的转接器 - USB 转 HDMI等 )
- 从用户的角度来看,被适配类是看不见的,是解耦合的
- 用户调用适配器转换出来的接口方法,由适配器去调用被适配者的相应接口方法
II. 适配器模式分类
- 类适配器
- 对象适配器
- 接口适配器
III. 类适配器模式的类图
IV. 类适配器模式代码
完整代码 github
- 部分代码
public class Adapter extends Laptop implements TransferLine {
public Adapter() {
provideHDMI();
}
public String provideHDMI() {
setPort("HDMI");
return getPort();
}
}
V. 对象适配器模式
- 对象适配器模式相对于类适配器模式就是将继承关系转为组合关系, 更为符合 合成复用原则
public class Adapter implements TransferLine {
private Laptop laptop;
public Adapter(Laptop laptop) {
this.laptop = laptop;
}
public String provideHDMI() {
if (laptop != null) {
laptop.setPort("HDMI");
}
return laptop.getPort();
}
}
VI. 接口适配器模式
- 当我们仅需要使用某个接口中的某一个方法时,可以使用接口适配器模式
public interface AdapterInterface {
void fun1();
void fun2();
void fun3();
void fun4();
}
/* 以默认方式实现接口所有方法 */
public abstract class AbstractAdapter implements AdapterInterface {
public void fun1() {}
public void fun2() {}
public void fun3() {}
public void fun4() {}
}
/* 不想实现所有接口时,只需实现我们想要的方法就好 */
public class Client {
public static void main(String[] args) {
new AbstractAdapter(){
@Override
public void fun1() {
System.out.println("=== 接口适配器 ===");
}
};
}
}