java - 關(guān)于設(shè)計(jì)模式的選擇
問(wèn)題描述
場(chǎng)景如下: 客戶會(huì)通過(guò)sdk傳過(guò)來(lái)原始消息,我現(xiàn)在開(kāi)發(fā)的模塊收到消息后會(huì)根據(jù)配置對(duì)該消息進(jìn)行提取和轉(zhuǎn)換生成新的消息格式,并通過(guò)mq傳給下游模塊。
如果套用一個(gè)模式的話應(yīng)該是用什么呢?
編輯于:2017年6月22日 18:00
可能我沒(méi)有描述清楚,導(dǎo)致大家誤解了,詳細(xì)描述一下場(chǎng)景:
接收消息
判斷該消息是從哪個(gè)客戶發(fā)過(guò)來(lái)的,并取出該客戶在后臺(tái)的配置
根據(jù)配置信息,進(jìn)行消息的提取和轉(zhuǎn)換,生成新格式的消息
把新消息發(fā)送給后端其他模塊進(jìn)行處理
問(wèn)題解答
回答1:你所完成的功能是一個(gè)轉(zhuǎn)換器,限定死要求來(lái)的數(shù)據(jù)的格式,譬如id,type,content,你可以寫(xiě)一個(gè)接口,擁有g(shù)etId,getType,getContent方法,要求實(shí)現(xiàn)方必須提供這幾個(gè)值。經(jīng)過(guò)你的轉(zhuǎn)換器后,得到不同的對(duì)象。
回答2:我想可以這樣來(lái)實(shí)現(xiàn):
針對(duì)不同的消息,有不同的消息處理器(Handler)來(lái)完成對(duì)應(yīng)的功能,消息提取和新消息的生成等;
這些Handler實(shí)現(xiàn)了一個(gè)共同的接口,后續(xù)還可以繼續(xù)增加新的Handler;
所有Handler形成一個(gè)處理鏈,每個(gè)Handler有個(gè)match方法來(lái)判斷是否該由自己處理,不能處理的,交給后續(xù)的Handler。
所以我覺(jué)得可以考慮責(zé)任鏈模式,策略模式等。
回答3:這么簡(jiǎn)單的需求,adapter,適配一下就可以了
相關(guān)文章:
1. 測(cè)試自動(dòng)化html元素選擇器元素ID或DataAttribute [關(guān)閉]2. html5 - datatables 加載不出來(lái)數(shù)據(jù)。3. javascript - QQ第三方登錄的問(wèn)題4. html5和Flash對(duì)抗是什么情況?5. 利用IPMI遠(yuǎn)程安裝centos報(bào)錯(cuò)!6. node.js - mongodb查找子對(duì)象的名稱為某個(gè)值的對(duì)象的方法7. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?8. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境9. 正在使用electron和node.js做桌面應(yīng)用,需要實(shí)時(shí)監(jiān)聽(tīng)是否有網(wǎng)絡(luò)連接,node或者electron是否可以做到10. spring-mvc - spring-session-redis HttpSessionListener失效

網(wǎng)公網(wǎng)安備