2009-07-16 2 views
2

Рассмотрите веб-форму с выпадающим списком. На основе выбора в выпадающем меню отображаются некоторые параметры - не многие, скажем, два или три для каждого выбора. Когда пользователь нажимает OK, сервер создает новый объект, тип которого определяется раскрывающимся списком, атрибуты из соответствующих параметров.Операции с иерархией объектов и операторы «case»

Таким образом, сервер должен сделать три вещи в зависимости от выбора: отобразить некоторые данные; получить некоторые данные и создать объект соответствующего типа. Вы могли бы использовать три аргумента case здесь или создать класс AObjectCreator, который может быть соответствующим образом подклассифицирован для каждого выбора в раскрывающемся списке?

+0

Мне нравится, когда это возможно для подкласса или использовать более продвинутые шаблоны дизайна в сравнении с несколькими случаями, частью вопроса. –

+0

Это зависит от того, будете ли вы ожидать добавления большего количества типов в будущем. Если количество типов, скорее всего, не изменится когда-либо и будет достаточно маленьким, перейдите в его корпус в одном месте - используйте заводский метод. – Gishu

ответ

0

Похоже, что вам необходимо Factory.
Взгляните на теперь почти синонимный пример PizzaFactory

+1

Вы действительно создали бы фабрику, базовый класс и два подтипа, если в раскрывающемся списке было только два варианта? –

+0

Нет. В этом случае я бы просто использовал if-else и покончил с этим. – Gishu

1

Подкласс.

Операторы переключателей могут быть беспорядочными, быстрыми.

+0

Как быстро? Не могли бы вы решить проблему, если в выпадающем списке было 5 вариантов? Как насчет 3? 2? –

+0

Формулы нет. Если есть возможность добавить дополнительные параметры, перейдите к объектам. Если случаи могут быть сложными, обратитесь к объектам. В конечном итоге дизайн зависит от вас. Сделайте то, что подходит вашей проблеме лучше всего. Подклассификация - это только мое предложение. – geowa4