zig*_*ggy 1 java class-design classloader java-ee
我试图想出一个解决方案,根据消息类型,在运行时选择处理"消息"的类.我知道我可以使用这样的东西
if msg_type = "A"
MsgAProcessor.execute(message);
else if msg_type = "B"
MsgBProcessoror = execute(message);
....
....
....
Run Code Online (Sandbox Code Playgroud)
我不想使用上面的方法,因为我不希望代码知道我可以处理的消息类型的任何信息.我希望将来能够为新的消息类型添加新的消息处理器.我现在想到的解决方案如下
目前有3个消息处理器
MsgAProcessor
MsgBProcessor
MsgBProcessor
Run Code Online (Sandbox Code Playgroud)
所有这三个类都有一个名为execute的方法,它将以自己的方式处理消息.我创建了一个名为MsgProcessor的接口,并在接口中添加了execute()方法.
现在我很难知道调用者应该调用哪个消息处理器而不必检查消息类型.例如,我不能这样做
MsgProcessor proc = new MsgAprocessor()proc.execute()
上面将要求在if语句中,因为它需要在找到消息类型后立即调用.我还想避免使用实现类类型进行实例化.
有没有更好的方法来实现同样的目标?
我希望能够从接口调用MsgProcessor.execute,并让运行时环境知道要根据消息类型调用哪个实现类.
这是一个简单的命令模式.
| 归档时间: |
|
| 查看次数: |
2914 次 |
| 最近记录: |