Это хороший дизайн в спящем режиме? - PullRequest
0 голосов
/ 21 августа 2010

у меня есть родительский объект Служба и дочерний объект ExtendedService в наследовании SINGLE_TABLE.

Третий объект ServiceCollector должен включать обаEntites Service и ExtendedService.Это фиксированное требование, и с помощью этого дизайна я могу реализовать его с помощью полиморфизма.

ПРОБЛЕМА : очень часто мне нужно получить ТОЛЬКО родительский класс Service, поэтому я запрашиваю его по дискриминаторуколонка ... я думаю, что это плохой дизайн для моей хулиганы, не правда ли?

Это простой пример, действительно, у меня много подклассов Service, например, для магазина, который продает разныетовар, каждый товар может иметь разные свойства.

Заранее спасибо.

1 Ответ

1 голос
/ 21 августа 2010

Если каждый ExtendedService недопустим в качестве ответа на запрос для Service, это звучит больше похоже на то, что у вас есть Шаблонирование через Наследование, а не Полиморфизм. Простое решение состоит в том, чтобы сделать Service абстрактным, поэтому у вас есть AbstractService и пустой класс Service, который расширяет его и просто определяет DiscriminatorValue. (Затем ExtendedService расширяет AbstractService и т. Д.)

Сопоставление столбца дискриминатора с запросом не является концом света, если все остальное работает хорошо для вас. Лично я подал бы это больше к "Inelegant", чем "Bad Design", но это всего лишь мнение.

...