在實(shí)現MessageBodyService服務(wù)時(shí),發(fā)現不同實(shí)現中,有著(zhù)很多共性的一些,所以通過(guò)抽象類(lèi)的方式,封裝共性的,在具體的實(shí)現中,封裝特性的。
抽象封裝Message,以及組合Sender和Saver可以參見(jiàn)如下代碼:
public class SamplerMessage implements Message { private Sender sender; private Saver saver; private String jsonMessage; private MessageSenderService messageSenderService; private MessageBodyService messageBodyService; public SamplerMessage(String jsonMessage, MessageSenderService messageSenderService, MessageBodyService messageBodyService) { this.jsonMessage= jsonMessage; // 封裝service到Message this.messageSenderService = messageSenderService; this.messageBodyService= messageBodyService; } public Sender getSender() throws Exception { sender = new SamplerSender(jsonMessage, messageSenderService, messageBodyService); return sender; } public Saver getSaver() { saver = new SamplerSaver(jsonMessage); return saver; } }優(yōu)化
針對如上問(wèn)題,首先是通過(guò)組合的方式重新封裝。
Message message = adapterService.adapter(jsonMessage); message.getSender().send(); message.getSaver().save();之前和同事討論這里,很形象的比如成,Sender像一張弓,Message像一支箭,getSender()可以獲取不同的弓,Message也可以是不同的箭,通過(guò)不同的實(shí)現隨意組合。
通過(guò)組合的方式,就可以在不改變外觀(guān)行為的框架下,構造針對不同特定的具體實(shí)現。
二、這里以服務(wù)號消息(ServiceNoMessage)為例,SamplerMessage是Message的一種具體實(shí)現,其中SamplerSender和SamplerSaver分別是Sender和Saver的具體實(shí)現。
public class ServiceNoMessageBodyServiceImpl extends AbsMessageBodyService { protected String generate() throws Exception { ... } }免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站