什么是适配器模式
Gang of Four 说过,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
这句话中可以知道,适配器是为方便多个接口或者类协同的工作。客户所要使用的也是他们协作的结果。
上面的UML图采集与wiki。 图中可以看到Adaptor类实现了多个接口,每个结构有不同的方法,它的方法methodA 对这些方法做总的调用,根据需要来调用接口中的方法。左边的Client类只需要调用Adaptor类的方法methodA就可以了。
适配器模式的作用
企业应用当中,一个系统往往是需要和多个系统交互数据的,最常见的方式是由对方提供接口,一个系统中的一个功能那个可能需要同时使用多个系统提供的服务,也就是要调用多个它们所提供的接口,这些接口之间并不互相存在必然的关系。这个时候就需要Adapter来合理协作这些接口,而客户系统也只需要调用Adapter类就可以了。
请看下面代码:
//interface support by File System
public interface FileInterface {
public void getFileByUser(String userName);
}
//interface support by User Manager System
public interface UserInterface {
public String getUser();
}
//adapter implements two interface
public class FileAdapter implements UserInterface, FileInterface {
@Override
public void getFileByUser(String userName) {
System.out.println("return file");
}
@Override
public String getUser() {
return "userName";
}
//cooperate two different methods
public void getFile(){
getFileByUser(getUser());
}
}
public class Client extends FileAdapter {
//client use the function directly
public void doWork(){
//other action
this.getFile();
}
}
代码中可以看到FileAdapter类在方法getFile中了,协作了各个接口的方法。用户Client类在doWork中直接使用了该方法。