此方法可用于,新增转接新的客户至已经有的服务上,就是说在已有服务和新的请求之间,加入一层适配层,将新的请求进行,拼装,然后调用原服务
需要如下类
1.Adaptee ------>被适配的对象,即原有服务
2.Target ------>适配器接口,-此接口提供执行方法
3.Adapter ------> .适配器实现类,此接口实现Target ,同时包含一个Adaptee 的成员属性
4.Client ------> 客户端类,此类进行调用, 可以提供多个方法,方法内部实现调用
package Adapter;
/**
* 适配器模式
* @author DMW
* @2019年1月16日
*/
public class Main {
public static void main(String[] args) {
/**
* 通过client执行
*/
Client c =new Client();
Target t =new Adapter();
c.invok(t);
Target t2 =new Adapter2();
c.invok(t2);
/**
* 直接通过target执行
*/
Target t3 =new Adapter3();
t3.invoke();
}
}
package Adapter;
/**
* 适配器接口
* @author DMW
* @2019年1月16日
*/
public interface Target {
void invoke();
}
package Adapter;
/**
* 适配器实现类
* @author DMW
*
* @2019年1月16日
*/
public class Adapter implements Target{
/**
* 如果有需要,可以根据原服务建立多个适配器类
* 或者在此方法内部进行服务分配
*/
private Adapted a =new Adapted();
@Override
public void invoke() {
a.doSomething();
}
}
class Adapter2 implements Target{
private Adapted b =new Adapted();
@Override
public void invoke() {
b.deleteSomeThing();
}
}
class Adapter3 implements Target{
private Adapted b =new Adapted();
@Override
public void invoke() {
b.catchSomeThing();
}
}
package Adapter;
/**
* 被适配的对象
* @author DMW
*
* @2019年1月16日
*/
public class Adapted {
public void doSomething(){
System.out.println("我是被适配的对象,我要doSomeThing");
}
public void deleteSomeThing(){
System.out.println("我是被适配的对象,我要deleteSomeThing");
}
public void catchSomeThing(){
System.out.println("我是被适配的对象,我要catchSomeThing");
}
}