适配器模式
定义
将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。
——维基百科
Demo
类适配器
Adaptee.java
//无法直接调用的类,需要使用被适配
public class Adaptee {
void doSomeThing() {
System.out.println("我是等待被适配的类,我被调用了");
}
}
Target.java
//需要被适配为这种形式的接口
public interface Target {
void doSomeThing();
}
Adapter.java
//适配器
public class Adapter extends Adaptee implements Target{
@Override
public void doSomeThing() {
super.doSomeThing();
}
}
Test.java
//测试
public class Test {
public static void main(String[] args) {
//使用适配器调用被适配的方法
Target adapter = new Adapter();
adapter.doSomeThing();
}
}
对象适配器
根据合成复用原则,尽量使用聚合而不是继承关系,其他类不变,适配器改动一下,日常使用中,这种适配器比较常用
Adapter.java
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter() {
adaptee = new Adaptee();
}
@Override
public void doSomeThing() {
adaptee.doSomeThing();
}
}