建模问题 - 带命令的联网设备

时间:2010-03-11 13:10:19

标签: oop modeling

我今天遇到了一个令人头疼的建模问题:

我们正在建模由设备 NetworkDevices 组成的物理控制系统。 设备的任何示例都是电视。 NetworkDevice 的一个示例是具有以太网连接的IR收发器。

如您所见,为了能够通过互联网控制电视,我们必须将设备连接到 NetworkDevice 设备 NetworkDevice 之间存在一对多的关系,即电视只有一个 NetworkDevice (红外收发器),但红外收发器可能会控制许多设备(例如许多电视)。

到目前为止没问题。

复杂的一点是每个设备都有命令的集合。 命令的类型(例如 IrCommand SerialCommand - 当前未建模的NB)取决于的类型< strong> NetworkDevice 设备已连接到。

在当前的遗留系统中,设备包含一系列通用命令(无需输入),其中字段是“解释”的,具体取决于 NetworkDevice 类型。

如何在OOP中对此进行建模,以便:

  • 您只能添加相应类型的命令,因为 NetworkDevice 设备已附加到?
  • 如果我更改了NetworkDevice,则Commands集合将更改为相应的类型
  • 使API简单/优雅/直观易用

1 个答案:

答案 0 :(得分:0)

您可以使用Abstract Factory Pattern。我们的想法是给Device一个工厂来创建Commands。工厂的类型取决于NetworkDevice的类型。因此,如果DeviceIR-Controller相关联,则会获得IRCommandFactory