2010-03-11 123 views
1

联网的设备我遇到了一个今天头划伤建模问题:建模问题 - 用命令

我们正在建模的设备NetworkDevices由物理控制系统。 设备的任何示例都是电视机。一个网络设备的例子是一个以太网连接的红外收发器。

正如你所看到的,是能够控制电视在互联网上,我们必须设备连接到NETWORKDEVICE。有一个一对多的关系设备和NETWORKDEVICE之间即TV仅具有一个NETWORKDEVICE(IR收发器),但是IR收发器可以控制许多设备(例如许多电视)。

到目前为止没有问题。

复杂的一点是,每个设备有一个集合命令。该类型的命令的(例如IrCommandSerialCommand - 注:目前不考虑)上NETWORKDEVICE类型的设备连接取决于

在目前的遗留系统的设备具有通用命令(不打字),其中字段“解释”,这取决于NETWORKDEVICE类型的集合。

如何去OOP中模拟这种这样的:

  • 你永远只能添加一个命令相应类型的,鉴于NETWORKDEVICE设备连接到?
  • 如果我改变NETWORKDEVICE的命令集合更改为适当的类型
  • 使它这样的API是简单/优雅/直观的使用
+0

请说明,这组命令总是相同的,但是基于NetworkDevice的实现有所不同?或者是否有只在某些NetworkDevices上可用的命令? – 2010-03-11 13:29:25

+0

否。该组命令是完全可定制的 - 网络设备需要“兼容”命令。例如,红外网络设备将需要红外代码。串行NetworkDevice可能需要有效的串行代码 – Schneider 2010-03-11 21:23:54

回答

0

你可以使用Abstract Factory Pattern。这个想法是为Device创建Commands的工厂。工厂的类型取决于NetworkDevice的类型。所以,如果Device连接到IR-Controller,它将得到一个IRCommandFactory

+0

因此,如果我从IR断开并连接到串行,工厂将更改?我不确定业务是否需要在插入新的NetworkDevice时删除命令 – Schneider 2010-03-11 21:25:51