【问题标题】:Design flaw in own IoT-Device message-handling architecture自己的物联网设备消息处理架构中的设计缺陷
【发布时间】:2019-05-10 12:39:10
【问题描述】:

我即将为具有不同行为并通过各种协议进行通信的物联网设备构建测试环境。为了实现这一点并保持对扩展开放,我将设备及其协议彼此分离。下图概述了应用程序的当前结构:

我认为这种实现在结构上是正确的,因为一个设备有一个配置和一个(可替换的)MessageHandler。这意味着,IOTDevice 并不关心消息是如何通过网络发送的。

问题: 当我从外部收到消息时(即 MessageHandler 收到消息,调用 handle 方法),我希望能够执行在其中一个 IOTDev_X 类中定义的预定义行为(即调用方法 doX ()、doY() 或 doZ())。但是 MessageHandler 对 IOTDevice 一无所知。这样就无法在收到传入消息时调用特定的方法。

我想到的一个解决方案是 MessageHandler 包含 IOTDevice。但在我看来,这感觉像是一个糟糕的设计。

什么是克服这个问题的好方法(最好不放弃完整的设计)。

【问题讨论】:

    标签: java design-patterns architecture


    【解决方案1】:

    观察者模式呢?

    您的 IOTDevice 可以通过接口转为 MessageObserver,您的 MessageHandler 可以通过接口转为 MessageObservable。

    现在在 MessageHandler 中注册您的 IOTDevice 以侦听事件。注册只需填写 MessageEventObserver 的集合您的 MessageHandler 现在可以通过事件 messageReceived 通知您的 IOTDevice,只需循环抛出已注册的 MessageEventObserver 并调用 MessageIncoming

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多