接口
/**
* 接口
*/
public interface IHandler {
void request();
}
原有业务
/**
* 表单提交
*/
public class RequestHandler implements IHandler{
@Override
public void request() {
System.out.println("表单提交请求");
}
}
通用执行器
/**
* 通用执行器
*/
public class Handler {
private IHandler handler;
public Handler(IHandler handler) {
this.handler = handler;
}
public void run(){
handler.request();
}
}
调用
public class Main {
public static void main(String[] args) {
// 表单提交请求处理器
IHandler request = new RequestHandler();
// 通用执行
Handler handler = new Handler(request);
System.out.print("【通用执行】【同步】");
handler.run();
}
}
执行结果
【通用执行】【同步】表单提交请求
现在新增业务:Ajax请求
/**
* 异步提交,被适配对象
*/
public class AjaxRequestHandler {
public void ajaxRequest(){
System.out.println("Ajax请求");
}
}
在通用执行器代码中,Handler构造函数接收IHandler接口实现类对象,然而新增业务并没有实现该接口,此时为了达到相同效果,适配器的作用就在于此,类如,插头和插座接口不同,就需要一个插座转换器来帮忙一样,适配器代码如下
/**
* 适配器
*/
class RequestHandlerAdapter implements IHandler{
private AjaxRequestHandler ajaxRequestHandler;
public RequestHandlerAdapter(AjaxRequestHandler ajaxRequestHandler) {
this.ajaxRequestHandler = ajaxRequestHandler;
}
@Override
public void request() {
ajaxRequestHandler.ajaxRequest();
}
}
调用
public class Main {
public static void main(String[] args) {
// 表单提交请求处理器
IHandler request = new RequestHandler();
// Ajax提交请求处理器
AjaxRequestHandler ajaxRequestHandler = new AjaxRequestHandler();
// 适配器转化
IHandler ajaxRequestAdapter = new RequestHandlerAdapter(ajaxRequestHandler);
// 通用执行
Handler handler = new Handler(request);
System.out.print("【通用执行】【同步】");
handler.run();
handler = new Handler(ajaxRequestAdapter);
System.out.print("【通用执行】【异步】");
handler.run();
}
}
执行效果
【通用执行】【同步】表单提交请求
【通用执行】【异步】Ajax请求