我真的需要您在可以使用的设计模式方面的帮助,因为现在我无法想到最好的解决方案。
我需要可以完成以下操作的东西。目前我有3个对象:
NotificationOne.java
NotificationTwo.java
NotificationThree.java
每个,基本上代表同一件事,但是在字段/属性方面,它们没有任何共同点。
这些实际上是一些JSON,当它们通过JMS队列到达时,我将将其映射到对象中。
现在,我真正需要做的是通过以特定方式为每个对象解释其字段,将这3个对象转换为一个共同的对象。到现在很容易完成。
真正的问题是,考虑到及时会有越来越多类型的通知,将必须从某些事物转换为一个共同的对象。
事物的流程将是这样的:
-json进入队列
- 我会将JSON映射到Pojo
- 将POJO访问到可能的工厂,该工厂必须处理每种类型的通知类,因此它可以将其转换为我们将其称为 commonNotification 的东西。
- commonNotification 必须存储到db
中- 必须将一个特定的通用通用字段用作通知有效载荷。
基于此流程,我可以使用的最佳模式是什么。
预先感谢。
您是说转换取决于通知的类型?就像Zapl所说的那样,在这种情况下,我将创建一个通用的界面,并让三个通知类进行转换。设计非常简单。每个创建新通知的人都知道它应该实现界面,因此知道应该进行转换。
从理论上讲,严格地说,您是对的,因为Pojo应该是Pojo,但是在这种情况下,我不会使我的设计比所需的更复杂。界面和多态性是去这里的方式。
接下来,创建一个通知的系统中没有任何副作用。因此,这并不是您的POJO正在修改任何系统状态。它只是具有非常特定于Pojo的逻辑。它属于pojo。
使用装饰器图案。
Concretedecorator只是将责任添加到原始 组件。
您可以使用不同的混凝土装饰器来用于不同的输出,但是如果您想要的话,您的原始组件的责任将在每个输出中都存在。
请参阅http://www.oodesign.com/decorator-pattern.html