亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

請求路由到業務方法設計(1)-我們到底能走多遠系列(43)

2019-11-15 00:32:17
字體:
來源:轉載
供稿:網友
請求路由到業務方法設計(1)-我們到底能走多遠系列(43)

我們到底能走多遠系列(43)    常規的web項目,比如用sPRingmvc這種框架,要來將某個url的請求指定到某個 Controller里的某個方法,這個方法負責將具體的業務完成即可。這件事我們熟悉不過,可是它是怎么做到的,也可以翻看源碼閱讀。像這種,需要完成路由工作的事情在實際項目中可能也會出現,其實任何一個需要處理請求的框架都需要解決這個問題。先拋出問題,后續文章用一個例子來完整設計一個方案。還有可以看一下其他各種框架都是如何解決這個問題的,值得研究。簡化這件事情:我們就干一件事,哪就是如何在處理請求時,安排對應的具體的業務方法來執行。1,用一個map,把對用的請求中key(假設傳的事json,里面有個key,來表示什么業務),和對應的類關聯起來,2,用模版方法,把圖中三個流程串起來,其中業務處理子類實現,每個子類都有一個doservice方法3,處理請求時都會解析json,拿到key,再從map中取出指定的實例,執行doservice方法即可。代碼簡略如下:請求假設先到達RemoteOpenServiceImpl的executeOpenService方法,直接路由找到要執行的業務實例。
public interface RemoteOpenService {    public JSON executeOpenService(JSON json, String method);}public class RemoteOpenServiceImpl implements RemoteOpenService{    @Override    public JSON executeOpenService(JSON json, String method) {        JSON returnJson = null;        BaseService service = (BaseService) OpenServiceRouter.getRouterMap().get(method);        returnJson = service.execute(json, ExampleRequest.class);                return returnJson;    }    }
OpenServiceRouter:
public class OpenServiceRouter {    private static Map<String, Object> routerMap;        public static Map<String, Object> getRouterMap(){        if(routerMap != null){            return routerMap;        }        routerMap = new HashMap<String, Object>();        routerMap.put("example", "exampleService");        return routerMap;    }        }

模版方法設計:實際執行的時service的excute方法,而這個方法執行中把業務部分的實現留給子類實現。

public interface BaseService {    public JSON execute(JSON json, Class c);}public abstract class AbstractBaseService implements BaseService{    // TODO    public final Request decode(JSON json, Class c){        ObjectMapper mapper = new ObjectMapper();        Request request = null;        try {            request = mapper.readValue(json.toJSONString(), c);        } catch (JsonParseException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (JsonMappingException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }         return request;    }    // TODO    public final JSON encode(Response response){        ObjectMapper mapper = new ObjectMapper();                  // Convert object to JSON string          JSON json = null;        try {            String j =  mapper.writeValueAsString(response);            json = JSON.parSEObject(j);        } catch (JsonGenerationException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (JsonMappingException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return json;    }        /**     * 子類不同實現具體邏輯     * @param request     */    public abstract Response doService(Request request);        /**     * 模版執行方法     * @param json     */    public final JSON execute(JSON json, Class c){        Request request = this.decode(json, c);        Response response = doService(request);        JSON retrunJson = this.encode(response);        return retrunJson;    }}

子類的實現:

public class ExampleServiceImpl extends AbstractBaseService{    @Override    public Response doService(Request request) {        ExampleRequest exampleRequest = (ExampleRequest)request;                return null;    }}
因為剛好需要設計一個這樣的被調用的組件,我就想好多地方會遇到這個場景,所以值得深入進來研究一下,以上是我想,不參考任何框架,以最原始的方式去實現一個這樣的請求路由。作為筆記的一部分,先開個頭,后續研究下其他框架對這個問題的設計。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久中文字幕2018| 狠狠操狠狠色综合网| 久久久亚洲精品视频| 日韩大片免费观看视频播放| 国产精品丝袜久久久久久不卡| 国产亚洲美女久久| 成人黄色在线播放| 亚洲精品小视频在线观看| 亚洲韩国日本中文字幕| 中文字幕亚洲综合久久| 亚洲四色影视在线观看| 中文字幕在线成人| 九九精品视频在线观看| 欧美xxxx14xxxxx性爽| 中文字幕亚洲欧美| 亚洲区在线播放| 国产精品人成电影| 亚洲精品小视频在线观看| 精品国产乱码久久久久酒店| 黄色一区二区在线观看| 狠狠色狠狠色综合日日五| 日韩av在线一区二区| 国内外成人免费激情在线视频网站| 日韩在线视频线视频免费网站| 国产一区深夜福利| 国产精品一区专区欧美日韩| 日韩天堂在线视频| 秋霞成人午夜鲁丝一区二区三区| 97国产精品视频人人做人人爱| 日韩av电影手机在线观看| 日韩在线欧美在线| 尤物yw午夜国产精品视频| 疯狂做受xxxx高潮欧美日本| 九色成人免费视频| 精品久久久久久久中文字幕| 久久九九亚洲综合| 亚洲精品美女在线观看播放| 在线视频欧美性高潮| 亚洲在线免费观看| 欧美日韩视频在线| 欧美成人免费va影院高清| 亚洲欧美一区二区精品久久久| 国产精品一区二区三区免费视频| 亚洲日本中文字幕| 欧美精品videos| 91人人爽人人爽人人精88v| 国产在线观看一区二区三区| 国产一区二区三区视频| 国产午夜精品理论片a级探花| 精品偷拍一区二区三区在线看| 青青久久av北条麻妃黑人| 欧美午夜片在线免费观看| 欧美激情啊啊啊| 亚洲精品v天堂中文字幕| 亚洲二区中文字幕| 日韩av电影在线网| 欧美高清在线播放| 亚洲一级片在线看| 精品成人乱色一区二区| 最近2019中文免费高清视频观看www99| 亚洲国产97在线精品一区| 欧美激情精品久久久久久黑人| 亚洲精品理论电影| 欧美色xxxx| 精品一区二区三区四区在线| 精品国偷自产在线| 亚洲激情国产精品| 91wwwcom在线观看| 国产精品18久久久久久首页狼| 国产专区欧美专区| 美女久久久久久久久久久| 亚洲自拍偷拍色图| 亚洲免费福利视频| 亚洲欧美激情四射在线日| 午夜精品久久久久久久白皮肤| 最近2019免费中文字幕视频三| 日韩欧美一区二区在线| 国产+成+人+亚洲欧洲| 啪一啪鲁一鲁2019在线视频| 日韩电影中文字幕在线观看| 日韩在线观看免费高清| 日韩理论片久久| 国产成人精品免高潮在线观看| 黄色91在线观看| 欧美一级在线播放| 久久精品国产成人| 国产精品久久久久7777婷婷| 国产91精品久久久| 国产精品永久免费在线| 97在线观看免费高清| 色青青草原桃花久久综合| 亚洲va欧美va在线观看| 中文日韩在线观看| 久久人人97超碰精品888| 欧美成人精品三级在线观看| 国产精品久久久久久亚洲影视| 国产一区二区三区18| 亚洲人成网站777色婷婷| 国产91免费观看| 欧美高清视频在线播放| 国产女人18毛片水18精品| 亚洲xxxxx电影| 国产精品久久久久久久美男| 国产精品视频久久久| 欧洲一区二区视频| 亚洲影院色无极综合| 久久琪琪电影院| 成人免费直播live| 欧美俄罗斯性视频| 国产一区二区三区中文| 日韩欧美精品网址| 色偷偷88888欧美精品久久久| 在线成人中文字幕| 亚洲成人a级网| 国产一区二区激情| 亚洲视频精品在线| 久精品免费视频| 亚洲国产成人在线视频| 精品亚洲精品福利线在观看| 国产亚洲精品久久久久久777| 97精品视频在线| 国产精品激情av电影在线观看| 黑人巨大精品欧美一区二区一视频| 69国产精品成人在线播放| 日韩一区二区三区xxxx| 久久久之久亚州精品露出| 国产成人精品日本亚洲| 国产精品扒开腿爽爽爽视频| 欧美国产视频日韩| 97精品久久久| 欧美成人精品影院| 日韩在线视频中文字幕| 日韩久久午夜影院| 久久人人97超碰精品888| 久久久久亚洲精品| 日韩亚洲欧美中文在线| 亚洲视频电影图片偷拍一区| 欧美在线视频a| 日韩av电影国产| 国产一区二区黄| 亚洲视频axxx| 成人免费淫片aa视频免费| 日韩成人av网| 日韩日本欧美亚洲| 国产精品露脸av在线| 一区三区二区视频| 国产欧美精品va在线观看| 国产精品视频不卡| 91免费国产网站| 欧美性xxxxxxx| 欧美成人免费全部| 九九综合九九综合| 中文字幕亚洲欧美在线| 亚洲欧美色婷婷| 亚洲欧洲午夜一线一品| 亚洲欧美日韩国产精品| 日韩色av导航| 久久九九全国免费精品观看| 精品福利樱桃av导航| 亚洲高清色综合| 久久精品影视伊人网| 日韩av在线一区二区| 国产成人精品在线| 7777精品久久久久久|