简而言之,就是在新接口中注入老接口的实现类,这样就能既使用新接口,又能复用老接口实现类的方法
具体塞入老实现类的逻辑,就是在适配器的构造方法中new之
public class NewInterfaceAdapter implements NewInterface {
private OldInterface oldObject;
public NewInterfaceAdapter (OldInterface oldInterfaceImpl) {
this.oldObject = oldInterfaceImpl;
}
}
如果不用适配器,那么用起来是这样的
OldInterface oldObject = new OldInterfaceImpl();
NewInterface newObject = new NewInterfaceImpl();
oldObject.oldExecute();
newOBject.newExecute();
如果用了以后,是这样的:
NewInterface oldObject = new NewInterfaceAdapter(new OldInterfaceImpl());
NewInterface newObject = new NewInterfaceImpl();
oldObject.newExecute();
newObject.newExecute();
相当于,你不是只让用新接口吗,那我就写一个中间件,实现你的新接口,但我在中间件中注入老接口,还按照老接口的一套开发
其实还是解耦的思想~
实战中,主要用来封装,比如有一套redis,写了奇怪的get,set方法,我们写一个RedisDAO,用我们自己熟悉的crud方法,然后里面放上redis的方法,我们就能无缝,无感知的使用redis,就像使用我们自己的一套数据库一样,这,就是适配器