适配器模式
适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
结构图:
Target:客户想要的目标类。
Adapter:适配器类,包含Adaptee对象,将原接口转换为目标接口。
Adaptee:适配者类。
例:
public interface Target { void request(int voltage); // 获取对应电压的交流电 }
public class Adapter implements Target { private Adaptee1 adaptee1 = new Adaptee1(); private Adaptee2 adaptee2 = new Adaptee2(); @Override public void request(int voltage) { System.out.println("我是适配器,将选择适配的对象进行方法调用"); if (voltage == 110) { adaptee1.request(); }else if(voltage == 220){ adaptee2.request(); }else{ System.out.println("没有适配的"); } } }
public class Adaptee1 { // 适配者1(110V交流电) public void request(){ System.out.println("我是110V交流电"); } }
public class Adaptee2 { // 适配者2(220V交流电) public void request(){ System.out.println("我是220V交流电"); } }
public class Test { public static void main(String[] args) { Target target = new Adapter(); // 客户想要的目标对象 target.request(220); // 调用目标方法(实际通过适配器调用了真正适配的对象的方法) } }
输出:
我是适配器,将选择适配的对象进行方法调用
我是220V交流电
可见,通过适配器类实现目标类和适配者类解耦。