我今天遇到了一个令人头疼的建模问题:
我们正在建模由设备和 NetworkDevices 组成的物理控制系统。 设备的任何示例都是电视。 NetworkDevice 的一个示例是具有以太网连接的IR收发器。
如您所见,为了能够通过互联网控制电视,我们必须将设备连接到 NetworkDevice 。 设备与 NetworkDevice 之间存在一对多的关系,即电视只有一个 NetworkDevice (红外收发器),但红外收发器可能会控制许多设备(例如许多电视)。
到目前为止没问题。
复杂的一点是每个设备都有命令的集合。 命令的类型(例如 IrCommand , SerialCommand - 当前未建模的NB)取决于的类型< strong> NetworkDevice 设备已连接到。
在当前的遗留系统中,设备包含一系列通用命令(无需输入),其中字段是“解释”的,具体取决于 NetworkDevice 类型。
如何在OOP中对此进行建模,以便:
答案 0 :(得分:0)
您可以使用Abstract Factory Pattern。我们的想法是给Device
一个工厂来创建Commands
。工厂的类型取决于NetworkDevice
的类型。因此,如果Device
与IR-Controller
相关联,则会获得IRCommandFactory
。