1. JFinal類java
private void initRender() { RenderFactory renderFactory = RenderFactory.me();//工廠設計模式、單例 renderFactory.init(constants, servletContext); }
2.RenderFactory類json
設置編碼格式、開發者模式、Render工廠(支持JSP、FreeMarker、Velocity三種視圖模式)設計模式
採用了工廠設計模式、單例設計模式,工廠模式方便咱們在controller中,使用renderXxx 方法將text json object等類型,包裝成Render對象,以單例模式保存着這個Render對象,同時在初始化後保存着咱們選用的視圖模式IMainRenderFactory,以及servletContextthis
public void init(Constants constants, ServletContext servletContext) { this.constants = constants;//咱們的配置 RenderFactory.servletContext = servletContext; // init Render Render.init(constants.getEncoding(), constants.getDevMode());//設置編碼格式和開發者模式 initFreeMarkerRender(servletContext); initVelocityRender(servletContext); initFileRender(servletContext); // create mainRenderFactory if (mainRenderFactory == null) { ViewType defaultViewType = constants.getViewType();//根據咱們的配置選擇所需用用到的Render工廠 if (defaultViewType == ViewType.FREE_MARKER) mainRenderFactory = new FreeMarkerRenderFactory(); else if (defaultViewType == ViewType.JSP) mainRenderFactory = new JspRenderFactory(); else if (defaultViewType == ViewType.VELOCITY) mainRenderFactory = new VelocityRenderFactory(); else throw new RuntimeException("View Type can not be null."); } // create errorRenderFactory if (errorRenderFactory == null) { errorRenderFactory = new ErrorRenderFactory(); } }