在设计模式中适配器模式应该算的上是比较重要的一种模式了。
首先我们来说下为什么需要适配器模式,适配器这个词不知各位是否模式。比如转接头,最常见的的应该算是充电器了,我们的电压是220V,但是我们的手机只能支持36V。怎么把220V的电压转换成36V的呢?这个转换的过程就是适配。目的就是把以前的接口转换成我们目前所需要的接口,解决的问题就是接口不一致的问题。这个在面试中经常被问到。
下面来让我们看看UML图:
上面的target接口就是我们的目标接口,在以前的代码中我们使用的接口是Shape接口。可是客户只接受target接口,这时我们就需要一个适配。
/** * Created by gao.mq on 2017/4/26. * 目标接口 */public interface Target { public void request();}
/** * Created by gao.mq on 2017/4/26. */public class TargetImpl implements Target { private Shape shape; @Override public void request() { shape=new Circle(); shape.draw(); }}
大家注意看第二张图,我们把shape接口注入进来。在target接口中的request方法调用shape接口中的方法,这样看起来不就是target接口request方法,但是执行的是shape接口draw方法。
在具体的实际环境中可能有参数,具体实例化哪个引用等信息。大家到时只能根据情况去判断,怎么可以更优雅的写出这些代码。