文章详情页
java - 关于设计模式的选择
问题描述
场景如下: 客户会通过sdk传过来原始消息,我现在开发的模块收到消息后会根据配置对该消息进行提取和转换生成新的消息格式,并通过mq传给下游模块。
如果套用一个模式的话应该是用什么呢?
编辑于:2017年6月22日 18:00
可能我没有描述清楚,导致大家误解了,详细描述一下场景:
接收消息
判断该消息是从哪个客户发过来的,并取出该客户在后台的配置
根据配置信息,进行消息的提取和转换,生成新格式的消息
把新消息发送给后端其他模块进行处理
问题解答
回答1:你所完成的功能是一个转换器,限定死要求来的数据的格式,譬如id,type,content,你可以写一个接口,拥有getId,getType,getContent方法,要求实现方必须提供这几个值。经过你的转换器后,得到不同的对象。
回答2:我想可以这样来实现:
针对不同的消息,有不同的消息处理器(Handler)来完成对应的功能,消息提取和新消息的生成等;
这些Handler实现了一个共同的接口,后续还可以继续增加新的Handler;
所有Handler形成一个处理链,每个Handler有个match方法来判断是否该由自己处理,不能处理的,交给后续的Handler。
所以我觉得可以考虑责任链模式,策略模式等。
回答3:这么简单的需求,adapter,适配一下就可以了
标签:
java
相关文章:
1. docker绑定了nginx端口 外部访问不到2. debian - docker依赖的aufs-tools源码哪里可以找到啊?3. 如何判断数组写入数据库有重复的值4. docker gitlab 如何git clone?5. dockerfile - [docker build image失败- npm install]6. angular.js - angular2 有什么cool的loading组件么?7. 想看以前的课程怎么办,8. angular.js - angularjs移动端项目需要引入外部的PC网页,iframe宽高设定100%,显示的内容依然是PC那种效果,不是缩放成适配屏9. html5 - 两个宽高一样的盒子重叠后旋转一定角度,为什么会看到下面的盒子10. macos - mac下docker如何设置代理
排行榜