将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起的两个类能够在一起工作。
适配器模式是把一个接口或类转换成其他的接口或者类,从另一方面讲,适配器模式也是一种包装模式,类图如下:
类图
三个角色:
Target目标角色:该角色定义把其他类转换成何种接口,也就是期望接口;
Adaptee源角色:想要转换的对象,是已经存在运行良好的类;
Adapter适配器角色:把源角色转换成目标角色;
代码:
public interface Target {
public void request();
}
/**
* 原角色,需要转化为Target类型
* @author isc
*
*/
public class Adaptee {
public void doSth(){
System.out.println("我是原角色,请勿修改!");
}
}
public class Adapter extends Adaptee implements Target{
@Override
public void request() {
super.doSth();
}
}
public class Client {
public static void main(String[] args) {
Target t= new Adapter();
t.request();
}
}
使用场景:
系统扩展时需要使用一个已有的类,但是这个类又不符合新系统的接口,这时可以选择用适配器模式。它是解决正在运行中的项目问题,而不是说设计阶段应该考虑使用的问题。此外项目一定要遵循依赖导致和里氏替换原则。