发布于2020-11-19 20:22 阅读(1038) 评论(0) 点赞(13) 收藏(4)
SpringMVC中的DispatchServlet使用了适配器模式,来适配Controller类。当需要新增Controller类的时候,可以在不修改原有框架代码的基础上,添加HandlerAdapter类即可正常工作。
public interface Controller {
}
class AnnotationController implements Controller {
public void doAnnotationController() {
System.out.println("annotation...");
}
}
class HttpController implements Controller {
public void doHttpHandler () {
System.out.println("http...");
}
}
class SimpleController implements Controller {
public void doSimplerHandler() {
System.out.println("simple...");
}
}
public interface HandlerAdapter {
void handle(Object controller);
boolean supports(Object controller);
}
class AnnotationHandlerAdapter implements HandlerAdapter {
public void handle(Object handler) {
((AnnotationController) handler).doAnnotationController();
}
public boolean supports(Object handler) {
return (handler instanceof AnnotationController);
}
}
class HttpHandlerAdapter implements HandlerAdapter {
public void handle(Object handler) {
((HttpController) handler).doHttpHandler();
}
public boolean supports(Object handler) {
return (handler instanceof HttpController);
}
}
class SimpleHandlerAdapter implements HandlerAdapter {
public void handle(Object handler) {
((SimpleController) handler).doSimplerHandler();
}
public boolean supports(Object handler) {
return (handler instanceof SimpleController);
}
}
public class DispatchServlet {
public static List<HandlerAdapter> handlerAdapters = new ArrayList<>();
public DispatchServlet() {
handlerAdapters.add(new AnnotationHandlerAdapter());
handlerAdapters.add(new HttpHandlerAdapter());
handlerAdapters.add(new SimpleHandlerAdapter());
}
public void doDispatch() {
AnnotationController controller = new AnnotationController();
HandlerAdapter adapter = getHandler(controller);
adapter.handle(controller);
}
private HandlerAdapter getHandler(Controller controller) {
for (HandlerAdapter ha : handlerAdapters) {
if (ha.supports(controller))
return ha;
}
return null;
}
public static void main(String[] args) {
new DispatchServlet().doDispatch();
}
}
原文链接:https://blog.csdn.net/weixin_40037938/article/details/109775246
作者:小胖子爱java
链接:http://www.javaheidong.com/blog/article/833/012f1c15a0c40d7b0db1/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!