2010-03-11 53 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