如何表示既可以是数字也可以是模拟的传感器和执行器?

How to represent sensors and actuators, that both can be digital and analog?

我正在从事与硬件相关的项目,尤其是传感器和执行器。传感器和执行器都可以是数字的和模拟的。所有四种类型的示例:

问题是,我如何表示这些类,又不违反OOP原则,至少让设计清晰和逻辑。

图上是我的一个解决方案:

但我认为这个解决方案是"ugly"

下一个解决方案在这里:

这个解决方案也很糟糕,因为冗余属性和不统一的方法名称。

你有什么建议?也许存在解决我的问题的设计模式? 感谢您的帮助!

我会通过对模拟值或数字值使用两种不同的操作来解决这个问题return。原因很简单,您不会真正混合它们。如果您读取温度,您将 readAnalog() 获取该值,而对于一个开关,您将调用 readBinary()。通过这种方式,您可以实现从二进制文件读取浮点数会引发异常。

此外,我不会将其混入 Device。执行器和传感器非常不同,它们唯一可能继承的是塑料外壳(甚至这看起来也很奇怪)。

终于找到解决办法了。 在我的具体案例中,Sensor 和 Actuator classes 只是对有关当前值和套接字端口号的数据的抽象。所以我决定摆脱差异,为传感器和执行器制作一个 class。离散和连续设备都有自己的 classes。