Сегодня я столкнулся с проблемой моделирования царапин на голове:
Мы моделируем физическую систему управления, состоящую из устройств и NetworkDevices . Любой пример устройства - телевизор. Примером NetworkDevice является ИК-приемопередатчик с подключением Ethernet.
Как видите, чтобы иметь возможность управлять телевизором через Интернет, мы должны подключить Device к NetworkDevice . Между Device и NetworkDevice существует отношение один ко многим, т. Е. Телевизор имеет только один NetworkDevice (ИК-приемопередатчик), но ИК-приемопередатчик может управлять многими Устройства (например, много телевизоров).
Пока проблем нет.
Сложный бит состоит в том, что каждое устройство имеет набор команд . Тип Command (например, IrCommand , SerialCommand - NB в настоящее время не моделируется) зависит от типа NetworkDevice , к которому подключено Устройство .
В текущей унаследованной системе Устройство имеет набор общих Команд (без ввода), где поля "интерпретируются" в зависимости от типа NetworkDevice .
Как мне моделировать это в ООП так, чтобы:
- Вы можете когда-либо добавить Command соответствующего типа, если NetworkDevice Устройство подключено к?
- Если я изменю NetworkDevice, коллекция команд изменится на соответствующий тип
- Сделайте так, чтобы API был простым / элегантным / интуитивно понятным