Spring源码中的扩展性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinaihalo/article/details/83112361

面向对象开闭原则要求对修改关闭,对扩展开放。有良好扩展性,抽象很重要。常用的抽象方式:abstract类和interfaces。Spring的HandlerAdapter能适配到真正干活的Handler(controller),HandlerAdapter以interfaces类型和Object参数,使得Spring扩展和兼容性良好。

spring的DispatchServlet核心代码
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

接口注释
在这里插入图片描述
HandlerAdapter 接口使得DispatchServlet有良好扩展性,只需getHandlerAdapter返回对于的实现类即可,有新的HandlerAdapter只需实现接口即可,原有的实现类不用改动,实现类可以无限扩展。

HandlerAdapter 核心方法
public interface HandlerAdapter {
ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;
}

接口注释
在这里插入图片描述
第三个参数Object handler可看出处理程序是Object类型,而不是某类限定interface类型,使得可以启用来自其他框架的处理程序,集成其他表现层框架。

猜你喜欢

转载自blog.csdn.net/sinaihalo/article/details/83112361