Какой шаблон дизайна я должен использовать в этом вопросе? - PullRequest
7 голосов
/ 09 января 2011

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

Это вопрос:

Предположим, ресторан предлагает только два следующих типа питания: (а) полноценное питание и (б) экономичное питание. Полноценное блюдо состоит из следующих продуктов и подается в следующем порядке: 1. Закуска 2. Напиток 3. Основное блюдо 4. Десерт Между тем экономическая еда состоит из следующих продуктов питания и подается в следующий порядок: 1. напиток 2. основное блюдо

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

Я запутался между Фабрикой и Итератором и использую их обоих вместе. Используя фабричный шаблон, мы можем сделать два приема пищи полноценными и экономичными и предоставить пользователю базовый класс объектов, который будет определяться. Но как мы можем обеспечить упорядочение элементов, я подумал об использовании итератора, который будет перебирать композицию двух созданных фабрик, вроде как.

Что вы думаете?

Ответы [ 3 ]

1 голос
/ 09 января 2011

Это двухэтапный процесс, и я думаю, что вы запутались.Основная вещь, которую они ищут, - это шаблон, который вы будете использовать для выбора логики, с помощью которой пользователь будет заказывать еду.То, что на самом деле делает эта логика, или в каком порядке подается еда, не имеет отношения к этой части.

Таким образом, у вас будет базовый интерфейс Meal или абстрактный класс, в котором есть метод или методы для размещения заказа (это не говорит о том, что еда должна запрашиваться в порядке ее подачи,вы заметите).Этот класс Meal, вероятно, будет иметь несколько методов, один из которых включает ServeFood () или аналогичный.Для этого у вас будет два конкретных класса (например, FullMeal и EconomyMeal), и, поскольку их порядок не важен, вы можете реализовать их с помощью Factory.правильный порядок при вызове ServeFood () для них.

1 голос
/ 09 января 2011

Первое, что приходит на ум, - это шаблон Decorator. Таким образом, вы можете создать основу Meal и 2 бетонных блюда FullMeal и EconomicMeal, тогда вы сможете использовать компоненты еды в качестве декораторов и смешивать их так, как вам нравится.

0 голосов
/ 09 января 2011

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

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

В чем проблема?Просто предоставьте клиенту 2 варианта выбора ("choose meal type (1-full, 2-economy): ", и все готово. Зачем нужен шаблон проектирования для этого?

Шаблоны проектирования - это инструмент для программиста / дизайнера, а не пользователяТаким образом, правильный (ИМХО) вопрос должен быть «предложить шаблон (ы) проектирования, который позволил бы программисту ...», например «... комбинировать / модифицировать тип еды на основе заданных фиксированных типов блюд» или что-то вродесортировка.

Как уже говорилось, вопрос не определяет проблему программирования / проектирования или молча предполагает слишком много.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...