作用
- 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
何时使用
- 系统需要使用现有的类,而此类的接口不符合系统的需要
- 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口
- 通过接口转换,将一个类插入另一个类系中
优点
- 可以让任何两个没有关联的类一起运行
- 提高了类的复用
- 增加了类的透明度
- 灵活性好
实例
package xin.chen.structural_type.adapter;
/**
* @Author: create_By: chenxin
* @Data:Created in 2018/8/23 10:41
* @Version:
* @Acton: 被适配的类
*/
public class Adaptee {
public void request(){
System.out.println("可以完成客户请求的需要的功能");
}
}
package xin.chen.structural_type.adapter;
/**
* @Author: create_By: chenxin
* @Data:Created in 2018/8/27 14:26
* @Version:
* @Acton:
*/
public interface Target {
void handleReq();
}
package xin.chen.structural_type.adapter;
/**
* @Author: create_By: chenxin
* @Data:Created in 2018/8/27 14:27
* @Version:
* @Acton: 适配器
*/
public class Adapter implements Target{
private Adaptee request;
@Override
public void handleReq() {
request.request();
}
public Adapter(Adaptee request){
this.request = request;
}
}
package xin.chen.structural_type.adapter;
/**
* @Author: create_By: chenxin
* @Data:Created in 2018/8/27 14:56
* @Version:
* @Acton:
*/
public class TestAdapterDemo {
public void test(Target target){
target.handleReq();
}
public static void main(String[] args){
TestAdapterDemo client = new TestAdapterDemo();
Adaptee a = new Adaptee();
Target t = new Adapter(a);
client.test(t);
}
}