SpringMVC源碼中的擴展性

面向對象開閉原則要求對修改關閉,對擴展開放。有良好擴展性,抽象很重要。常用的抽象方式: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類型,使得可以啓用來自其他框架的處理程序,集成其他表現層框架。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章