假设我有一个应用程序,负责将供应商消息转换为规范消息。例如:
public class MessageA extends VendorMessage { ... }
public class MessageB extends VendorMessage { ... }
public class MessageX extends CanonicalMessage { ... }
public class MessageY extends CanonicalMessage { ... }
其中MessageA映射到MessageX,MessageB映射到MessageY。
我的方法是为每种消息类型创建一个转换器类来处理此转换。在这个示例中,我将拥有以下转换器:
public class MessageXTransfomer()
{
public MessageX transform(MessageA message) {...}
}
public class MessageYTransfomer()
{
public MessageY transform(MessageB message) {...}
}
我的问题实际上是如何最终调用转换���的方式。
由于我的过程需要一些VendorMessage作为输入,所以我需要检查类型,以便知道应该将其指向哪个具体的转换器。例如,一种方法可能是这样的:
public class TransfomerService
{
MessageXTransformer messageXTransformer = new MessageXTransformer();
MessageYTransformer messageYTransformer = new MessageYTransformer();
public CanonicalMessage transform(VendorMessage message)
{
if (message instanceOf MessageA)
{
return messageXTransformer.transform((MessageA) message);
}
else if (message instanceOf MessageB)
{
return messageYTransformer.transform((MessageB) message);
}
}
}
我不确定为什么,但这种方法让我感到奇怪——好像我做错了什么。是否有最佳实践来解决这类问题,我应该使用哪种方法?
注:我正在寻找最佳方法,而不使用任何转换框架等。理想情况下,该模式应该只需使用基本的Java即可实现。