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

Oop 建模问题-带命令的网络设备,oop,modeling,Oop,Modeling,我今天遇到了一个令人头疼的建模问题: 我们正在对由设备和网络设备组成的物理控制系统进行建模。设备的任何示例都是电视。网络设备的一个例子是具有以太网连接的红外收发器 如您所见,要通过internet控制电视,我们必须将设备连接到网络设备。设备和网络设备之间存在一对多关系,即电视只有一个网络设备(红外收发器),但红外收发器可以控制多个设备(例如多台电视) 到目前为止没有问题 复杂的一点是每个设备都有一组命令。命令的类型取决于设备连接到的网络设备的类型(例如IrCommand,串行命令-注意:当前未建

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

我们正在对由设备和网络设备组成的物理控制系统进行建模。设备的任何示例都是电视。网络设备的一个例子是具有以太网连接的红外收发器

如您所见,要通过internet控制电视,我们必须将设备连接到网络设备。设备网络设备之间存在一对多关系,即电视只有一个网络设备(红外收发器),但红外收发器可以控制多个设备(例如多台电视)

到目前为止没有问题

复杂的一点是每个设备都有一组命令命令的类型取决于设备连接到的网络设备的类型(例如IrCommand串行命令-注意:当前未建模)

在当前的传统系统中,设备有一组通用的命令(无需键入),其中字段根据网络设备类型进行“解释”

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

  • 如果设备连接到网络设备,则只能添加适当类型的命令
  • 如果更改NetworkDevice,则命令集合将更改为适当的类型
  • 使API使用起来简单/优雅/直观

    • 您可以使用。想法是给
      设备
      一个工厂,用于创建
      命令
      。工厂的类型取决于
      网络设备的类型。因此,如果
      设备
      连接到
      IR控制器
      ,它将得到一个
      IRCommandFactory

      请澄清,命令集是否总是相同的,但基于网络设备的实现是不同的?或者是否存在仅在某些网络设备上可用的命令?否。该命令集完全可自定义-网络设备需要“兼容”命令。例如,红外网络设备将需要通信设备的红外代码。串行网络设备可能需要有效的串行代码SSO如果我从IR断开连接并连接到串行设备,工厂是否会更改?我还不确定当您插入新的网络设备时,业务是否需要删除这些命令