【问题标题】:Design Pattern to implement a (IoT)-Device API实现(IoT)设备 API 的设计模式
【发布时间】:2019-05-12 15:37:28
【问题描述】:

我正在寻找一些设计模式来以灵活的方式实现物联网设备接口。

场景是: 我们有一组具有一些共同功能的设备(比如不同的温度传感器)......

StartMeasurement - 开始温度读数。

设备类型因专业而异。第二种设备类型另外实现了一种配置温度分辨率的方法。

把这个设备层次结构写成接口类很容易:

interface BasicTempSensor
{
      StartMeasurement()
}

interface ConfigureableSensor : public BasicTempSensor
{
   ConfigureResolution(config)
}

现在,这些设备应该作为物联网设备连接。我们想使用 Microsoft IoT 设备 SDK。在它的基础上,它提供了一种为设备注册方法(按名称)和注册相应回调的方法。 -> 一般来说,它是通信层,它提供发送和接收命令和消息的功能。

问题是: 我正在寻找一种方法来为上层的通信层进行良好而灵活的抽象。还应考虑通用接口结构。 有没有设计模式可以做这样的抽象?

我的第一种方法是在设备和应用程序端实现所示的接口结构。接口实现映射到可以通过通信层发送的命令。 (适配器模式?)

我还查看了http://johnny-five.io/ 框架。在应用程序方面,设备功能是从小的基本类构建的。不知道它是如何在设备端实现的。 也许这个方向的一些信息也有帮助。

简而言之: 我正在寻找实现类型安全设备 api 描述的模式,该描述还以多态方式涵盖设备的公共部分。

谢谢。 东武

【问题讨论】:

  • 基本上,您想开发一个可用于交互、使用和管理物联网设备的应用程序?如果是,那么在高层次上,您需要首先将应用程序划分为模块化功能,如发现、连接、getSensorReadings、管理等。
  • 是的,我想开发一个应用程序来管理物联网设备并与之交互。每个设备的接口是我的问题。如何按照上述要求来描述和设计这些设备的接口?
  • 抽象出IoTDevice的通用属性和操作,如name、macId、deviceState、operation、sensorReading等。另外,在组合中使用设备的行为会做出简洁的设计(策略模式)。

标签: design-patterns iot communication api-design


【解决方案1】:

我猜,template method 是一个答案。

这意味着您定义一个基类,为每个和任何需要的操作公开抽象方法 - 这意味着,足以描述最具体和最复杂的传感器的行为。比您将该基类子类化 - 每个传感器一次;你亲爱的朋友 - 编译器 - 强制你实现所有抽象方法 - 甚至那些与这种特定传感器类型无关的方法。他们中很少有人通常什么都不做——要么是空的 void 方法,要么是像 BaseClass Calibrate(BaseClass baseClass) { return baseClass; } 这样的 return-oneliners。

不用说你保留这些方法protected - 不要将内部暴露在外面。外部世界仅处理和知道您的 BaseClass - 当然,工厂或任何其他参与创建适当的 BaseClass 实现的对象除外。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多