На основе вашей примерной сцены:
Вы хотите использовать шаблон стратегии, когда вы используете только один алгоритм для каждого процесса выпечки. Алгоритмов много, но для каждого процесса выпечки вы используете только один из них. В этом случае вашими стратегиями для Baker могут быть CookieProcess, PizzaProcess, ... Чтобы испечь пиццу, вы настраиваете Baker на использование < em> PizzaProcess. Затем вы передаете ингредиенты методу bake (), и пицца отправляется на ваш почтовый ящик. Пойдите с этим, потому что думать о возвращаемом типе здесь может сбивать с толку, и вы тоже боретесь с фабричным шаблоном. Когда вы настраиваете Baker для использования CookieProcess, Baker запекает их и отправляет половину из них в центр города в почтовый ящик вашей бабушки.
Итак, здесь есть две разные стратегии:
- запекать при 220 градусах Цельсия и отправлять на ваш почтовый ящик,
- испечь при 180 по Цельсию и отправить вам и вашей бабушке
Если вы хотите смоделировать процесс выпечки более подробно, вы воспользуетесь шаблоном состояний. В этом случае ваши состояния могут быть BakerOff, BakerPreheating, BakerPreheatingDone, BakerHeating, BakerCooldown em. >. Когда вы начинаете готовить шоколадное печенье для дурацкой конференции в пятницу, Baker находится в состоянии BakerOff. Несмотря на сонливость, вы пытаетесь вставить печенье, но у вас ничего не получается, за исключением того, что только плохие кондитеры выпекают свое печенье без предварительного нагрева. Итак, вы вызываете метод enable () объекта Baker. Внутреннее состояние изменится на BakerPreheating, а через некоторое время - на BakerPreheatingDone. При этом переходе состояния может быть вызван обратный вызов, например огромный, встроенный в BakerBell. Это напоминает вам о том, что нужно вставить файлы cookie и начать этап BakerHeating ...
Итак, здесь мы печем печенье только для бабушек, но в подробном виде со многими состояниями. Обратите внимание, что вы можете выпекать куки только с помощью этого Baker, поскольку у вас есть только один алгоритм выпечки.
Для опытного Пекаря вы можете комбинировать шаблоны. Тогда вы сможете печь пиццу и печенье в одном и том же Baker с помощью причудливого предварительного разогрева! Конечно, можно пропустить этап предварительного нагрева, когда Baker настроен для PizzaProcess.
Вы получаете пекаря, который может использовать разные стратегии (пицца, печенье). Каждый из них использует несколько состояний для завершения. Однако стратегия решает, какие состояния можно пропустить или поменять местами. (Возможно, в стратегии есть метод isPreheatingForced ())
person
Alexander
schedule
12.05.2013