【发布时间】:2019-05-10 12:39:10
【问题描述】:
我即将为具有不同行为并通过各种协议进行通信的物联网设备构建测试环境。为了实现这一点并保持对扩展开放,我将设备及其协议彼此分离。下图概述了应用程序的当前结构:
我认为这种实现在结构上是正确的,因为一个设备有一个配置和一个(可替换的)MessageHandler。这意味着,IOTDevice 并不关心消息是如何通过网络发送的。
问题: 当我从外部收到消息时(即 MessageHandler 收到消息,调用 handle 方法),我希望能够执行在其中一个 IOTDev_X 类中定义的预定义行为(即调用方法 doX ()、doY() 或 doZ())。但是 MessageHandler 对 IOTDevice 一无所知。这样就无法在收到传入消息时调用特定的方法。
我想到的一个解决方案是 MessageHandler 包含 IOTDevice。但在我看来,这感觉像是一个糟糕的设计。
什么是克服这个问题的好方法(最好不放弃完整的设计)。
【问题讨论】:
标签: java design-patterns architecture