@vilix

Как лучше спроектировать в данном примере классы?

Есть устройства контроллеры - Controllers, у них одинаковые наборы атрибутов. Но они могут быть разных производителей и в зависимости от производителей разные возможности и функции. Пока у меня класс

Controller:
  • Id
  • Name
  • Address
  • DeviceId - по этому ID можно будет достать техн характеристики данного типа устройства, напр производителя.


Этот класс я планирую посредством orm хранить в таблице Controllers.

Дальше я хочу поместить функции для работы с контроллерами, они должны быть сгруппированы по производителям.

В голове у меня создать по классу на производителя наследующих Controller. Например :

ControllerVendor1 : Controller
  • setData()


ControllerVendor2 : Controller
  • setData()


Хоть название функций одно и тоже, код будет отличатся.

Далее мне нужно, при получении из базы, получать контроллер нужного типа. Для этого я думаю в методе 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 собираюсь хранить не в базе, а где то зашито в коде будет.
  • Вопрос задан
  • 261 просмотр
Пригласить эксперта
Ответы на вопрос 1
alexchin
@alexchin
Все вроде ок. Есть подозрения?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы