java - 關(guān)于設(shè)計(jì)模式的選擇
問題描述
場景如下: 客戶會(huì)通過sdk傳過來原始消息,我現(xiàn)在開發(fā)的模塊收到消息后會(huì)根據(jù)配置對該消息進(jìn)行提取和轉(zhuǎn)換生成新的消息格式,并通過mq傳給下游模塊。
如果套用一個(gè)模式的話應(yīng)該是用什么呢?
編輯于:2017年6月22日 18:00
可能我沒有描述清楚,導(dǎo)致大家誤解了,詳細(xì)描述一下場景:
接收消息
判斷該消息是從哪個(gè)客戶發(fā)過來的,并取出該客戶在后臺的配置
根據(jù)配置信息,進(jìn)行消息的提取和轉(zhuǎn)換,生成新格式的消息
把新消息發(fā)送給后端其他模塊進(jìn)行處理
問題解答
回答1:你所完成的功能是一個(gè)轉(zhuǎn)換器,限定死要求來的數(shù)據(jù)的格式,譬如id,type,content,你可以寫一個(gè)接口,擁有g(shù)etId,getType,getContent方法,要求實(shí)現(xiàn)方必須提供這幾個(gè)值。經(jīng)過你的轉(zhuǎn)換器后,得到不同的對象。
回答2:我想可以這樣來實(shí)現(xiàn):
針對不同的消息,有不同的消息處理器(Handler)來完成對應(yīng)的功能,消息提取和新消息的生成等;
這些Handler實(shí)現(xiàn)了一個(gè)共同的接口,后續(xù)還可以繼續(xù)增加新的Handler;
所有Handler形成一個(gè)處理鏈,每個(gè)Handler有個(gè)match方法來判斷是否該由自己處理,不能處理的,交給后續(xù)的Handler。
所以我覺得可以考慮責(zé)任鏈模式,策略模式等。
回答3:這么簡單的需求,adapter,適配一下就可以了
相關(guān)文章:
1. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?2. android - 百度地圖加載完成監(jiān)聽3. 關(guān)于docker下的nginx壓力測試4. nignx - docker內(nèi)nginx 80端口被占用5. java - 阿里的開發(fā)手冊中為什么禁用map來作為查詢的接受類?6. macos - mac下docker如何設(shè)置代理7. python3.x - git bash如何運(yùn)行.bat文件?8. dockerfile - [docker build image失敗- npm install]9. golang - 用IDE看docker源碼時(shí)的小問題10. docker api 開發(fā)的端口怎么獲取?
