Метафора

 

Представьте себе автомобиль. Для того чтобы им управлять, Вам вовсе не нужно знать устройство двигателя внутреннего сгорания и всех систем внутри него. Для этого достаточно уметь пользоваться его «Фасадом», интерфейсом с которым непосредственно взаимодействует водитель: руль, педали, коробка передач.

 

Читать далее

Метафора

 

Представьте, что нам требуется поставить пьесу. Однако по сценарию в этой пьесе задействованы несколько десятков людей, которые по своей сути выполняют одинаковые действия, например, участвуют в массовках различных сцен в разные промежутки времени, но между ними всё же есть какие-то различия (например, костюмы). Нам бы стоило огромных денег нанимать для каждой роли отдельного актера, поэтому мы используем паттерн «приспособленец». Мы создадим все нужные нам костюмы, но для каждой массовки будем переодевать небольшую группу актеров в требуемые для этой сцены костюмы. В результате мы имеем возможность ценой малых ресурсов создавать видимость управления большим количеством казалось бы разных объектов.

 

Читать далее

Метафора

 

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

 

Читать далее

Метафора

 

Часто встречающийся шаблон из реальной жизни, представьте, что вы подписались на e-mail рассылку на каком-либо сайте, при этом, когда выходит новая статья, инициируется событие уведомления Вас о её выходе.

 

Читать далее

Метафора

 

Для примера можно рассмотреть управление солдатами в строю. Существует строевой устав, который определяет, как управлять строем и согласно этого устава абсолютно не важно кому отдается приказ (например, «шагом марш») одному солдату или целому взводу. Соответственно в устав (если его в чистом виде считать паттерном «компоновщик») нельзя включить команду, которую может исполнить только один солдат, но не может исполнить группа, или наоборот.

 

Читать далее

Назначение

 

Шаблонный метод определяет основу алгоритма (каркас) и позволяет подклассам переопределять некоторые шаги алгоритма, не изменяя его структуры в целом. Таким образом, контракт между базовым классом и его наследниками определяется более чётко, чем это делается простым наследованием. За счёт определения каркаса алгоритма в базовом классе, мы избегаем лишнего дублирования кода.

 

Читать далее

Метафора

 

Стратегия используется для выбора различных путей достижения результата. Допустим, нам понадобилось сходить в магазин за продуктами, какой выбор у нас есть? Можно заказать продукты на дом, можно сходить самому, можно отправить жену :). В любом из возможных случаев вы получаете результат – продукты из магазина.

 

Читать далее

Метафора

 

Примером из жизни может служить способ сокращения набором слов определенных действий, например, говоря официанту в сабвее: «Серый, курица терияки, со всеми овощами, 1000 островов и чесночный», Вы тем самым даёте ему на интерпретацию некоторую команду, а он уже пытается её преобразовать в последовательность выполнения команд: достать и разрезать серый хлеб, положить куриную начинку со всеми овощами и залить это все двумя соусами, подать Вам.

 

Читать далее

Метафора

 

Паттерн команда хорошо может быть представлен в виде выключателя в квартирах. Каждый выключатель по своей сути делает одно простое действие — соединяет или разъединяет провода. Что будет при этом ему не важно, к нему может быть подключена лампочка или пылесос, для выключателя это не имеет значения.

 

Читать далее

Метафора

 

Представим ситуацию, когда вам требуется работать на разных автомобилях, однако садясь в новый автомобиль вам уже желательно знать, как им управлять. Таким образом, Вы сталкиваетесь с паттерном «мост». С одной стороны, вы имеете множество различных автомобилей (разные модели и марки), но среди них есть общая абстракция (интерфейс) в виде руля, педалей, коробки передач и так далее. Таким образом, мы задаем как-бы правила изготовления автомобилей, по которым мы можем создавать любые их виды, но за счет сохранения общих правил взаимодействия с ними, мы можем одинаково управлять каждым из них. «Мостом» в данном случае является пара двух «объектов»: конкретного автомобиля и правил взаимодействия с этим (и любым другим) автомобилем.

 

Читать далее