我真的需要你对我可以使用的设计模式的帮助,因为现在我想不出最好的解决方案。
我需要能够完成以下任务的东西。 目前我有3个对象:
NotificationOne.java
NotificationTwo.java
NotificationThree.java
每一个,基本上代表相同的东西,但它们在字段/属性方面没有任何共同之处。
这些实际上是一些JSON,当它们通过JMS队列到达时,我将映射到对象中。
现在,我真正需要做的是将这三个对象转换为一个共同的对象,通过以特定的方式为每个对象解释它们。很容易做到'直到现在。
真正的问题是,应用的最佳设计模式是什么,考虑到及时会有越来越多类型的通知必须从某些东西转变为共同的对象。
事物的流动将是这样的:
-JSON进入队列
- 我会将JSON映射到POJO
- 将POJO发送到可能的工厂,该工厂必须处理每种类型的Notification类,因此它可以将其转换为我们称之为 CommonNotification 的东西。
- CommonNotification 必须存储到DB
中- CommonNotification的特定字段必须用作通知有效负载。
基于这个流程,我可以使用的最佳模式是什么。
提前致谢。
答案 0 :(得分:0)
您说转换取决于通知类型?就像zapl所说的那样,在这种情况下,我会创建一个通用接口,让三个通知类进行转换。设计非常简单。每个创建新通知的人都知道它应该实现接口,因此知道应该进行转换。
从理论上讲,你说POJO应该是一个POJO是正确的,但在这种情况下,我不会让我的设计变得复杂。接口和多态是这里的方法。
接下来,创建公共通知在系统中没有任何副作用。所以这不是你的POJO正在修改任何系统状态。它只是有一些特定于POJO的逻辑。它属于POJO。
答案 1 :(得分:0)
使用装饰器模式。
ConcreteDecorator只是增加了对原始版本的责任 成分
您可以为不同的输出设置不同的混凝土装饰器,但如果您想要的话,原始组件的责任将存在于每个输出中。