1.应用场景
多个类所做的事情相同或相似,但是方法不同,客户端在调用接口的时候想通过调用一个接口来实现所有不同类的方法调用,这时候可以建立一个中间的适配器类,适配器类继承或实现想要调用的接口,重载想要调用接口的方法,重载方法的内部实现通过其他类的方法实现,相当于在功能相同或相似的类上包了一层,从而实现接口调用的统一。
2.定义
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
3.UML图
4.代码样例
/**
* 客户端调用的统一类
*/
@Service
public class Target {
public void request(){
System.out.println("一般请求");
}
}
/**
* 客户端统一调用却方法相似而不同的其他类
*/
@Service
public class Adaptee {
public void specialRequest(){
System.out.println("特殊请求");
}
}
/**
* 适配器类
*/
@Service
public class Adaptor extends Target {
private Adaptee adaptee=new Adaptee();
@Override
public void request(){
adaptee.specialRequest();
}
}
/**
* 客户端调用
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-config.xml"})
public class TestExample {
@Test
public void adapterModeTest() {
Target adaptor=new Adaptor();
Target target=new Target();
adaptor.request();
target.request();
}
}
测试结果:
特殊请求
一般请求
5.适配器模式在Spring及JDK中的应用