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

标签 oop design-patterns uml class-diagram

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

  • 数字传感器:返回几种可能状态中的一种(即“存在”/“不存在”/“找不到”)
  • 模拟传感器:返回范围内的任何值,但结果根据刻度间隔进行舍入(即温度传感器返回 0 到 60 摄氏度之间的任何值,精度为一位数,例如 18.5 C)
  • 数字执行器:可以获得几种可能的状态之一(即电机,打开窗口,可以设置窗口“打开”/“半打开”/“关闭”)
  • 模拟执行器:可以获取范围内的任何值,并且值也根据刻度间隔四舍五入(即风扇每秒转数可以是 0 到 10,例如 9.5)

问题是,我如何在不违反 OOP 原则的情况下表示这些类,至少使设计清晰和合乎逻辑。

我的一个解决方案在图片上:

uml_diagram_solution_1

但我觉得这个方案“丑”

下一个解决方案在这里:

uml_diagram_solution_2

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

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

最佳答案

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

solution

关于oop - 如何表示既可以是数字也可以是模拟的传感器和执行器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44760173/

相关文章:

c++ - 多种输出格式的设计模式

python - 如何检查 python 函数输出并将其分配给变量而不执行该函数两次?

design-patterns - 单例模式的性能缺点

api - UML 图到模型 API

javascript - 在 Javascript 中将 var 转换为自定义类

java - Java中的关键字 "new"是必要的吗

c# - 设计游戏对象

sql-server - 选择/插入更新插入的版本 : is there a design pattern for high concurrency?

java - 为我的项目选择父类(super class)

uml - UML在面向对象分析与设计中的应用