适配器模式,顾名思义就是适配之用,一般场景就是,需要的是目标接口,但只有源接口,且源接口和目标接口不一致,这时候就需要一个中间过渡的转换器,这个转换器实现了目标接口,同时也可以执行源接口的逻辑。
打个形象的比喻,就好比你现在有一个两相的插头,但是插座是三相的,这样你硬插肯定是不行的,这时你就需要一个插线板(就是适配器的角色),一边你两相的插头可以插在它上面,它的插头也可以插在三相的插座上。
适配器模式主要的角色有:源接口, 目标接口,适配器。 下面直接上代码:
1、源接口 Adaptee
package com.hd.adapter; public interface Adaptee { void doAdaptee(); }
2、源接口实现类
package com.hd.adapter; public class MyAdaptee implements Adaptee { @Override public void doAdaptee() { System.out.println("I am adaptee"); } }
3、目标接口 Target
package com.hd.adapter; public interface Target { void doTarget(); }
4、适配器 Adaptor
它既实现了 Target 接口,内部又持有源接口的引用,在目标接口的方法实现里,调用源接口的方法。
package com.hd.adapter; public class Adaptor implements Target { private Adaptee adaptee; public Adaptor(Adaptee adaptee){ this.adaptee = adaptee; } @Override public void doTarget() { adaptee.doAdaptee(); } }
5、写一个测试类:
package com.hd.adapter; public class TestAdaptor { public static void main(String[] args){ Adaptee adaptee = new MyAdaptee(); Target target = new Adaptor(adaptee); target.doTarget(); // I am adaptee
} }
其实适配器模式在实际项目里用的比较少,主要用来重构原来项目的时候会用到,例如以前的接口比较重要,或者用的地方比较多,不方便随意更改接口,但是又要实现新接口的功能,这样就会用到适配器模式了。
未完待续。。。