实现(IoT)设备API的设计模式

时间:2018-12-11 15:45:40

标签: design-patterns iot communication api-design

我正在寻找一些设计模式,以灵活的方式实现IoT设备接口。

方案是: 我们有一组具有某些通用功能的设备(例如不同的温度传感器)...

StartMeasurement -开始读取温度。

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

很容易将此设备编写为接口类:

interface BasicTempSensor
{
      StartMeasurement()
}

interface ConfigureableSensor : public BasicTempSensor
{
   ConfigureResolution(config)
}

现在,这些设备应作为IoT设备连接。我们要使用Microsoft IoT设备SDK。在其基础知识中,它提供了一种为设备注册方法(按名称)和注册相应回调的方法。 ->通常,它是通信层,它提供发送和接收命令和消息的功能。

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

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

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

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

谢谢。 东武

1 个答案:

答案 0 :(得分:0)

我猜,template method是一个答案。

这意味着您定义一个基类,为每个所需的操作公开抽象方法-这意味着,足以描述最具体,最复杂的传感器的行为。比您可以继承该基类-每个传感器一次;您亲爱的朋友-编译器-强迫您实现所有抽象方法,甚至是那些与该特定传感器类型无关的抽象方法。因此,通常很少有它们什么都不做-空的void方法或诸如BaseClass Calibrate(BaseClass baseClass) { return baseClass; }之类的返回域。

无需赘言,您保留了这些方法protected-不会在内部暴露内部信息。外界交易并仅知道您的BaseClass-当然,除了工厂或创建适当的BaseClass实现所涉及的任何其他事项。