针对不同类型的输入消息的设计模式

时间:2015-11-19 11:31:54

标签: java oop design-patterns

我正在编写一个服务,可以接收不同格式的输入消息,如json,xml,csv等。虽然消息的格式不同,但数据在所有格式中都相似。我应该使用哪种设计模式来实现以下目标:

  • 应该能够在不更改现有代码的情况下添加新的邮件格式。
  • 将不同的邮件格式转换为统一格式,供核心服务使用以进行处理。

谢谢, 苏拉杰

2 个答案:

答案 0 :(得分:1)

乍一看,我会说战略模式。

创建一个抽象类(例如InputMessage),并为json,xml等派生策略。对于新类型的输入消息,只能从InputMessage派生新策略。

您可以使用操作转换为通用格式/从通用格式转换(对于每种策略,这些操作会有所不同)。

答案 1 :(得分:0)

经典的解决方案是访客模式。有很多参考资料可以解释这是什么,所以我不会复制它们。

优点:   - 编译时验证。添加新格式后,您“必须”提供其实现。

反政府:   - 所有实现都在一个类中完成,例如ProcessorVisitor。至少它是处理所有类型消息的一种切入点。   - 消息必须实现您必须定义的接口Visitable,因此消息“知道”它将被访问。

其他解决方案只是创建具有多个实现的接口Processor,例如XmlProcessorJsonProcessor等。创建根据邮件格式创建工厂的ProcessorFactory。该工厂可以是硬编码的,也可以是基于某些元数据,例如,将格式映射到工厂实现的属性文件。它甚至可以基于命名约定,例如, json映射到JsonProcessor等或注释。