我目前正在设计一个通信系统,并且想对我的 OOP 方法提出一些建议。
这非常简单——它从串行端口取出数据,将数据分成消息,然后将这些消息解析成其余代码可以使用的东西。例如,一条消息可能是“LightSensorReport”,其中包含从多个传感器收集的数据;这种情况下的数据只是整数值,但有些情况下数据更复杂。
所以,我认为串口是一个实现流接口的类。然后,我用于解析流的类负责从该流中取出数据,确定消息边界的位置,然后将这些消息发送到另一个类,该类将消息的二进制数据转换为诸如“LightSensorReport”之类的对象。
我的问题来自对最终数据类的思考以及它实际上是什么——在这种情况下是“LightSensorReport”。对我来说,它并不完全是一个对象——它只有状态,但它对该数据没有任何作用(所以它实际上是一个数据结构)。这是气味吗?这符合良好的 OOP 吗?
我制作 LightSensorReport 只是数据的理由就是——它只是数据。它自己并没有真正做任何事情,但其他类会使用它(例如,另一个类可能必须将它序列化为不同的协议格式;我不会把这个责任放在 LightSensorReport 上,因为它什么都不知道关于二进制协议)。
那么,这种类是否适合良好的 OOP 设计,或者它是否表明我正在以错误的方式思考某些事情?