S03 适配器模式 SpringMVC源码解析

org.springframework.web.servlet.DispatcherServlet

  • 相当于客户端 Test 的角色;
  • DispatcherServlet 是 SpringMVC 中最核心的类,主要做的事情是把请求交由对应的 Controller;
  • 其中最核心的方法是 doDispatch(HttpServletRequest request, HttpServletResponse response);
  • 由于 Controller 有众多实现类,如果每增加一个 Controller 的实现类,在 doDispatch(...) 中都要做类型的判断,那么是违反开闭原则的;
  • 具体解决方案是:SpringMVC中定义了一个适配器接口 HandlerAdapter,每增加一个 Controller 的实现类,就实现一个与其对应的 HandlerAdapter,在HandlerAdapter 的实现类中做 Controller 类型的判断,然后呢 doDispatch(...) 面向 HandlerAdapter 编程,遵守的开闭原则;


    8195388-0fb3f78659725d0b.png
    doDispatch().png

org.springframework.web.servlet.mvc.Controller 的众多实现类

  • 相当于被适配者 Adaptee;


    8195388-dfbf9eead799ef51.png
    Controller的实现类.png

org.springframework.web.servlet.HandlerAdapter 的众多实现类

  • 相当于具体的适配器角色;


    8195388-abe3aaac6838d8d9.png
    HandlerAdapter的实现类.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值