Есть устройства контроллеры - Controllers, у них одинаковые наборы атрибутов. Но они могут быть разных производителей и в зависимости от производителей разные возможности и функции. Пока у меня класс
Controller:
- Id
- Name
- Address
- DeviceId - по этому ID можно будет достать техн характеристики данного типа устройства, напр производителя.
Этот класс я планирую посредством orm хранить в таблице Controllers.
Дальше я хочу поместить функции для работы с контроллерами, они должны быть сгруппированы по производителям.
В голове у меня создать по классу на производителя наследующих Controller. Например :
ControllerVendor1 : Controller
ControllerVendor2 : Controller
Хоть название функций одно и тоже, код будет отличатся.
Далее мне нужно, при получении из базы, получать контроллер нужного типа. Для этого я думаю в методе Controller.get() - проверять, по deviceId производителя и в зависимости от него создавать уже нужный контроллер и return его.
return new ControllerVendor1(controller)
Насколько это нормальное решение, и как правильнее это сделать?
Язык C#;
в Device отображает возможности модели устройства.
Device:
- Id
- ModelName
- Vendor
- WorkModes
Пример из жизни: Допустим у нас есть два производителя контроллеров Vendor1 и Vendor2, мы купили 2 штуки первого и 1 штуку второго, назвали их ctr1, ctr2, ctr3.
Тогда
Devices: { {id: 1, vendor: "Vendor1"}, {id: 2, vendor: "Vendor2"} }
Controllers { {id: 1, name: "ctr1", deviceId: 1}, { id: 2, name: "ctr2", deviceId: 1}, { id:3, name: "ctr3", deviceId: 2} }
P.S Device собираюсь хранить не в базе, а где то зашито в коде будет.