Декоратор (Decorator, Wrapper) (от 01.05.2016)
Метафора Как понятно из названия, данный паттерн чаще всего используется для расширения исходного объекта до требуемого вида. Например, мы условно можем считать «декоратором» человека с кистью и красной краской. Таким образом, какой бы объект (или определенный тип объектов) мы не передали в руки «декоратору», на выходе мы будем получать красные объекты. Назначение …
https://abap-blog.ru/osnovy-abap/oop/dekorator-decorator-wrapper/
Метафора Как понятно из названия, данный паттерн чаще всего используется для расширения исходного объекта до требуемого вида. Например, мы условно можем считать «декоратором» человека с кистью и красной краской. Таким образом, какой бы объект (или определенный тип объектов) мы не передали в руки «декоратору», на выходе мы будем получать красные объекты. Назначение …
https://abap-blog.ru/osnovy-abap/oop/dekorator-decorator-wrapper/
abap-blog.ru
ABAP Blog | Декоратор (Decorator, Wrapper)
Метафора Как понятно из названия, данный паттерн чаще всего используется для расширения исходного объекта до требуемого вида. Например, мы условно можем считать «декоратором» человека с кистью и красной краской. Таким образом, какой бы объект (или определенный…
Адаптер (Adapter) (от 01.05.2016)
Метафора Представьте себе китайскую вилку и нашу розетку, воткнуть просто так без адаптера у вас не выйдет. Назначение Есть некоторые разрозненные классы, которые поддерживают требуемые данные и поведения, однако они не предоставляют необходимого интерфейса для взаимодействия с ними. Для этого Вам необходимо создать класс обёртку с нужным интерфейсом, который внутри себя будет…
https://abap-blog.ru/osnovy-abap/oop/adapter-adapter/
Метафора Представьте себе китайскую вилку и нашу розетку, воткнуть просто так без адаптера у вас не выйдет. Назначение Есть некоторые разрозненные классы, которые поддерживают требуемые данные и поведения, однако они не предоставляют необходимого интерфейса для взаимодействия с ними. Для этого Вам необходимо создать класс обёртку с нужным интерфейсом, который внутри себя будет…
https://abap-blog.ru/osnovy-abap/oop/adapter-adapter/
abap-blog.ru
ABAP Blog | Адаптер (Adapter)
Метафора Представьте себе китайскую вилку и нашу розетку, воткнуть просто так без адаптера у вас не выйдет. Назначение Есть некоторые разрозненные классы,
Заместитель (Proxy) (от 01.05.2016)
Метафора Наверняка вы работали когда-нибудь с прокси-серверами? Суть паттерна такая же, есть некоторый прокси объект, который делает перенаправление вызовов к реальному объекту. При этом для Вас как для клиента ничего не меняется, интерфейс остаётся тем же. Назначение Является суррогатом другого объекта и контролирует доступ к нему. Решает проблему контроля доступа к объекту,…
https://abap-blog.ru/osnovy-abap/oop/zamestitel-proxy/
Метафора Наверняка вы работали когда-нибудь с прокси-серверами? Суть паттерна такая же, есть некоторый прокси объект, который делает перенаправление вызовов к реальному объекту. При этом для Вас как для клиента ничего не меняется, интерфейс остаётся тем же. Назначение Является суррогатом другого объекта и контролирует доступ к нему. Решает проблему контроля доступа к объекту,…
https://abap-blog.ru/osnovy-abap/oop/zamestitel-proxy/
abap-blog.ru
ABAP Blog | Заместитель (Proxy)
Метафора Наверняка вы работали когда-нибудь с прокси-серверами? Суть паттерна такая же, есть некоторый прокси объект, который делает перенаправление вызовов к реальному объекту. При этом для Вас как для клиента ничего не меняется, интерфейс остаётся тем же.…
Состояние (State) (от 01.05.2016)
Метафора В реальной жизни каждый человек может прибывать в разных состояниях. Если вы устали, то на предложение «Сходи в магазин», вы скорее ответите «Не пойду, я устал». А если вы не устали, тогда скорее всего вы ответите «Уже иду». Таким образом, ваше поведение зависит от того, в каком состоянии Вы прибываете. Назначение …
https://abap-blog.ru/osnovy-abap/oop/sostoyanie-state/
Метафора В реальной жизни каждый человек может прибывать в разных состояниях. Если вы устали, то на предложение «Сходи в магазин», вы скорее ответите «Не пойду, я устал». А если вы не устали, тогда скорее всего вы ответите «Уже иду». Таким образом, ваше поведение зависит от того, в каком состоянии Вы прибываете. Назначение …
https://abap-blog.ru/osnovy-abap/oop/sostoyanie-state/
abap-blog.ru
ABAP Blog | Состояние (State)
Метафора В реальной жизни каждый человек может прибывать в разных состояниях. Если вы устали, то на предложение «Сходи в магазин», вы скорее ответите «Не пойду,
Хранитель (Memento) (от 01.05.2016)
Метафора Представьте себе гардероб и гардеробщицу, когда вы сдаете свою одежду в гардероб, гардеробщица реализует паттерн «хранитель», запоминая ваше состояние – «одежду», когда вам потребуется восстановить состояние, вы просто обращаетесь к гардеробщице за одеждой и восстанавливаете свое состояние до прихода в гардероб. Назначение Паттерн позволяет, не нарушая инкапсуляцию, зафиксировать и сохранить внутреннее…
https://abap-blog.ru/osnovy-abap/oop/xranitel-memento/
Метафора Представьте себе гардероб и гардеробщицу, когда вы сдаете свою одежду в гардероб, гардеробщица реализует паттерн «хранитель», запоминая ваше состояние – «одежду», когда вам потребуется восстановить состояние, вы просто обращаетесь к гардеробщице за одеждой и восстанавливаете свое состояние до прихода в гардероб. Назначение Паттерн позволяет, не нарушая инкапсуляцию, зафиксировать и сохранить внутреннее…
https://abap-blog.ru/osnovy-abap/oop/xranitel-memento/
abap-blog.ru
ABAP Blog | Хранитель (Memento)
Метафора Представьте себе гардероб и гардеробщицу, когда вы сдаете свою одежду в гардероб, гардеробщица реализует паттерн «хранитель», запоминая ваше состояние — «одежду», когда вам потребуется восстановить состояние, вы просто обращаетесь к гардеробщице…
Цепочка обязанностей (Chain of Responsibility) (от 01.05.2016)
Метафора Метафорой данного шаблона можно представить какой-нибудь орган гос. власти. Вы приходите в налоговую инспекцию за получением справки, оставляете заявление на её получение. Заявление у вас принимает один специалист, а далее в зависимости от типа документа, перенаправляет его на нужного человека, который специализируется обработкой этих заявок. Таким образом, ваше заявление (сообщение) проходит и обрабатывается…
https://abap-blog.ru/osnovy-abap/oop/cepochka-otvetstvennosti-chain-of-responsibility/
Метафора Метафорой данного шаблона можно представить какой-нибудь орган гос. власти. Вы приходите в налоговую инспекцию за получением справки, оставляете заявление на её получение. Заявление у вас принимает один специалист, а далее в зависимости от типа документа, перенаправляет его на нужного человека, который специализируется обработкой этих заявок. Таким образом, ваше заявление (сообщение) проходит и обрабатывается…
https://abap-blog.ru/osnovy-abap/oop/cepochka-otvetstvennosti-chain-of-responsibility/
abap-blog.ru
ABAP Blog | Цепочка обязанностей (Chain of Responsibility)
Метафора Метафорой данного шаблона можно представить какой-нибудь орган гос. власти. Вы приходите в налоговую инспекцию за получением справки, оставляете заявление на её получение. Заявление у вас принимает один специалист, а далее в зависимости от типа документа…
Мост (Bridge) (от 01.05.2016)
Метафора Представим ситуацию, когда вам требуется работать на разных автомобилях, однако садясь в новый автомобиль вам уже желательно знать, как им управлять. Таким образом, Вы сталкиваетесь с паттерном «мост». С одной стороны, вы имеете множество различных автомобилей (разные модели и марки), но среди них есть общая абстракция (интерфейс) в виде руля, педалей, коробки передач…
https://abap-blog.ru/osnovy-abap/oop/most-bridge/
Метафора Представим ситуацию, когда вам требуется работать на разных автомобилях, однако садясь в новый автомобиль вам уже желательно знать, как им управлять. Таким образом, Вы сталкиваетесь с паттерном «мост». С одной стороны, вы имеете множество различных автомобилей (разные модели и марки), но среди них есть общая абстракция (интерфейс) в виде руля, педалей, коробки передач…
https://abap-blog.ru/osnovy-abap/oop/most-bridge/
abap-blog.ru
ABAP Blog | Мост (Bridge)
Метафора Представим ситуацию, когда вам требуется работать на разных автомобилях, однако садясь в новый автомобиль вам уже желательно знать, как им управлять.
Команда (Command) (от 01.05.2016)
Метафора Паттерн команда хорошо может быть представлен в виде выключателя в квартирах. Каждый выключатель по своей сути делает одно простое действие – соединяет или разъединяет провода. Что будет при этом ему не важно, к нему может быть подключена лампочка или пылесос, для выключателя это не имеет значения. Назначение Паттерн преобразовывает запрос на…
https://abap-blog.ru/osnovy-abap/oop/komanda-command-2/
Метафора Паттерн команда хорошо может быть представлен в виде выключателя в квартирах. Каждый выключатель по своей сути делает одно простое действие – соединяет или разъединяет провода. Что будет при этом ему не важно, к нему может быть подключена лампочка или пылесос, для выключателя это не имеет значения. Назначение Паттерн преобразовывает запрос на…
https://abap-blog.ru/osnovy-abap/oop/komanda-command-2/
abap-blog.ru
ABAP Blog | Команда (Command)
Метафора Паттерн команда хорошо может быть представлен в виде выключателя в квартирах. Каждый выключатель по своей сути делает одно простое действие — соединяет или разъединяет провода. Что будет при этом ему не важно, к нему может быть подключена лампочка…
Интерпретатор (Interpreter) (от 01.05.2016)
Метафора Примером из жизни может служить способ сокращения набором слов определенных действий, например, говоря официанту в сабвее: «Серый, курица терияки, со всеми овощами, 1000 островов и чесночный», Вы тем самым даёте ему на интерпретацию некоторую команду, а он уже пытается её преобразовать в последовательность выполнения команд: достать и разрезать серый хлеб, положить куриную начинку…
https://abap-blog.ru/osnovy-abap/oop/interpretator-interpreter/
Метафора Примером из жизни может служить способ сокращения набором слов определенных действий, например, говоря официанту в сабвее: «Серый, курица терияки, со всеми овощами, 1000 островов и чесночный», Вы тем самым даёте ему на интерпретацию некоторую команду, а он уже пытается её преобразовать в последовательность выполнения команд: достать и разрезать серый хлеб, положить куриную начинку…
https://abap-blog.ru/osnovy-abap/oop/interpretator-interpreter/
abap-blog.ru
ABAP Blog | Интерпретатор (Interpreter)
Метафора Примером из жизни может служить способ сокращения набором слов определенных действий, например, говоря официанту в сабвее: «Серый, курица терияки, со всеми овощами, 1000 островов и чесночный», Вы тем самым даёте ему на интерпретацию некоторую команду…
Стратегия (Strategy) (от 01.05.2016)
Метафора Стратегия используется для выбора различных путей достижения результата. Допустим, нам понадобилось сходить в магазин за продуктами, какой выбор у нас есть? Можно заказать продукты на дом, можно сходить самому, можно отправить жену :). В любом из возможных случаев вы получаете результат – продукты из магазина. Назначение Определяет семейство алгоритмов, инкапсулирует каждый…
https://abap-blog.ru/osnovy-abap/oop/strategiya/
Метафора Стратегия используется для выбора различных путей достижения результата. Допустим, нам понадобилось сходить в магазин за продуктами, какой выбор у нас есть? Можно заказать продукты на дом, можно сходить самому, можно отправить жену :). В любом из возможных случаев вы получаете результат – продукты из магазина. Назначение Определяет семейство алгоритмов, инкапсулирует каждый…
https://abap-blog.ru/osnovy-abap/oop/strategiya/
abap-blog.ru
ABAP Blog | Стратегия (Strategy)
Метафора Стратегия используется для выбора различных путей достижения результата. Допустим, нам понадобилось сходить в магазин за продуктами, какой выбор у нас есть? Можно заказать продукты на дом, можно сходить самому, можно отправить жену :). В любом из…
Шаблонный метод (Template Method) (от 01.05.2016)
Назначение Шаблонный метод определяет основу алгоритма (каркас) и позволяет подклассам переопределять некоторые шаги алгоритма, не изменяя его структуры в целом. Таким образом, контракт между базовым классом и его наследниками определяется более чётко, чем это делается простым наследованием. За счёт определения каркаса алгоритма в базовом классе, мы избегаем лишнего дублирования кода. Диаграмма Шаблонный…
https://abap-blog.ru/osnovy-abap/oop/shablonnyj-metod-template-method/
Назначение Шаблонный метод определяет основу алгоритма (каркас) и позволяет подклассам переопределять некоторые шаги алгоритма, не изменяя его структуры в целом. Таким образом, контракт между базовым классом и его наследниками определяется более чётко, чем это делается простым наследованием. За счёт определения каркаса алгоритма в базовом классе, мы избегаем лишнего дублирования кода. Диаграмма Шаблонный…
https://abap-blog.ru/osnovy-abap/oop/shablonnyj-metod-template-method/
abap-blog.ru
ABAP Blog | Шаблонный метод (Template Method)
Назначение Шаблонный метод определяет основу алгоритма (каркас) и позволяет подклассам переопределять некоторые шаги алгоритма, не изменяя его структуры в целом. Таким образом, контракт между базовым классом и его наследниками определяется более чётко, чем…
Компоновщик (Composite) (от 01.05.2016)
Метафора Для примера можно рассмотреть управление солдатами в строю. Существует строевой устав, который определяет, как управлять строем и согласно этого устава абсолютно не важно кому отдается приказ (например, «шагом марш») одному солдату или целому взводу. Соответственно в устав (если его в чистом виде считать паттерном «компоновщик») нельзя включить команду, которую может исполнить только один…
https://abap-blog.ru/osnovy-abap/oop/komponovshhik-composite/
Метафора Для примера можно рассмотреть управление солдатами в строю. Существует строевой устав, который определяет, как управлять строем и согласно этого устава абсолютно не важно кому отдается приказ (например, «шагом марш») одному солдату или целому взводу. Соответственно в устав (если его в чистом виде считать паттерном «компоновщик») нельзя включить команду, которую может исполнить только один…
https://abap-blog.ru/osnovy-abap/oop/komponovshhik-composite/
abap-blog.ru
ABAP Blog | Компоновщик (Composite)
Метафора Для примера можно рассмотреть управление солдатами в строю. Существует строевой устав, который определяет, как управлять строем и согласно этого устава
Наблюдатель (Observer) (от 01.05.2016)
Метафора Часто встречающийся шаблон из реальной жизни, представьте, что вы подписались на e-mail рассылку на каком-либо сайте, при этом, когда выходит новая статья, инициируется событие уведомления Вас о её выходе. Назначение Позволяет определить зависимость «один-ко-многим» так, что при изменении одного объекта, все зависимые от этого изменения объекты были оповещены об этом. В…
https://abap-blog.ru/osnovy-abap/oop/nablyudatel-observer/
Метафора Часто встречающийся шаблон из реальной жизни, представьте, что вы подписались на e-mail рассылку на каком-либо сайте, при этом, когда выходит новая статья, инициируется событие уведомления Вас о её выходе. Назначение Позволяет определить зависимость «один-ко-многим» так, что при изменении одного объекта, все зависимые от этого изменения объекты были оповещены об этом. В…
https://abap-blog.ru/osnovy-abap/oop/nablyudatel-observer/
abap-blog.ru
ABAP Blog | Наблюдатель (Observer)
Метафора Часто встречающийся шаблон из реальной жизни, представьте, что вы подписались на e-mail рассылку на каком-либо сайте, при этом, когда выходит новая статья, инициируется событие уведомления Вас о её выходе. Назначение Позволяет определить зависимость…
Посредник (Mediator) (от 01.05.2016)
Метафора Хорошей метафорой будет башня управления в аэропорту, через неё пилоты запрашивают разрешение на посадку и взлёт, а уже диспетчер в ней решает кто, куда и в каком порядке будет приземляться и взлетать. Нет необходимости во взаимодействии пилотов друг с другом напрямую. Назначение Определяет объект, инкапсулирующий способ взаимодействия множества объектов друг с…
https://abap-blog.ru/osnovy-abap/oop/posrednik-mediator/
Метафора Хорошей метафорой будет башня управления в аэропорту, через неё пилоты запрашивают разрешение на посадку и взлёт, а уже диспетчер в ней решает кто, куда и в каком порядке будет приземляться и взлетать. Нет необходимости во взаимодействии пилотов друг с другом напрямую. Назначение Определяет объект, инкапсулирующий способ взаимодействия множества объектов друг с…
https://abap-blog.ru/osnovy-abap/oop/posrednik-mediator/
abap-blog.ru
ABAP Blog | Посредник (Mediator)
Метафора Хорошей метафорой будет башня управления в аэропорту, через неё пилоты запрашивают разрешение на посадку и взлёт, а уже диспетчер в ней решает кто,
Приспособленец (Flyweight) (от 01.05.2016)
Метафора Представьте, что нам требуется поставить пьесу. Однако по сценарию в этой пьесе задействованы несколько десятков людей, которые по своей сути выполняют одинаковые действия, например, участвуют в массовках различных сцен в разные промежутки времени, но между ними всё же есть какие-то различия (например, костюмы). Нам бы стоило огромных денег нанимать для каждой роли отдельного…
https://abap-blog.ru/osnovy-abap/oop/prisposoblenec/
Метафора Представьте, что нам требуется поставить пьесу. Однако по сценарию в этой пьесе задействованы несколько десятков людей, которые по своей сути выполняют одинаковые действия, например, участвуют в массовках различных сцен в разные промежутки времени, но между ними всё же есть какие-то различия (например, костюмы). Нам бы стоило огромных денег нанимать для каждой роли отдельного…
https://abap-blog.ru/osnovy-abap/oop/prisposoblenec/
abap-blog.ru
ABAP Blog | Приспособленец (Flyweight)
Метафора Представьте, что нам требуется поставить пьесу. Однако по сценарию в этой пьесе задействованы несколько десятков людей, которые по своей сути выполняют
Фасад (Facade) (от 01.05.2016)
Метафора Представьте себе автомобиль. Для того чтобы им управлять, Вам вовсе не нужно знать устройство двигателя внутреннего сгорания и всех систем внутри него. Для этого достаточно уметь пользоваться его «Фасадом», интерфейсом с которым непосредственно взаимодействует водитель: руль, педали, коробка передач. Назначение Предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Фасад определяет интерфейс…
https://abap-blog.ru/osnovy-abap/oop/fasad-facade/
Метафора Представьте себе автомобиль. Для того чтобы им управлять, Вам вовсе не нужно знать устройство двигателя внутреннего сгорания и всех систем внутри него. Для этого достаточно уметь пользоваться его «Фасадом», интерфейсом с которым непосредственно взаимодействует водитель: руль, педали, коробка передач. Назначение Предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Фасад определяет интерфейс…
https://abap-blog.ru/osnovy-abap/oop/fasad-facade/
abap-blog.ru
ABAP Blog | Фасад (Facade)
Метафора Представьте себе автомобиль. Для того чтобы им управлять, Вам вовсе не нужно знать устройство двигателя внутреннего сгорания и всех систем внутри него.
Посетитель (Visitor) (от 01.05.2016)
Метафора Данный паттерн можно сравнить с прохождением обследования в больнице. Однако «посетителем» в терминах паттернов здесь будут сами врачи. Чтобы было понятнее: у нас есть больной, которого требуется обследовать и полечить, но так как за разные обследования отвечают разные врачи, то мы просто присылаем к больному врачей в качестве «посетителей». Правило взаимодействия для больного…
https://abap-blog.ru/osnovy-abap/oop/posetitel-visitor/
Метафора Данный паттерн можно сравнить с прохождением обследования в больнице. Однако «посетителем» в терминах паттернов здесь будут сами врачи. Чтобы было понятнее: у нас есть больной, которого требуется обследовать и полечить, но так как за разные обследования отвечают разные врачи, то мы просто присылаем к больному врачей в качестве «посетителей». Правило взаимодействия для больного…
https://abap-blog.ru/osnovy-abap/oop/posetitel-visitor/
abap-blog.ru
ABAP Blog | Посетитель (Visitor)
Метафора Данный паттерн можно сравнить с прохождением обследования в больнице. Однако «посетителем» в терминах паттернов здесь будут сами врачи. Чтобы было
Итератор (Iterator) (от 01.05.2016)
Метафора Все помнят школьное «на первый второй рассчитайся!»? Вот именно в этот момент шеренга вашего класса и являлась реализацией паттерна «итератор», хотя в программировании это конечно более функциональное понятие, но суть примерно та же. «Итератор» предоставляет правила доступа к списку каких-либо объектов независимо от того, что это за объекты. То есть не важно, какой…
https://abap-blog.ru/osnovy-abap/oop/iterator-iterator/
Метафора Все помнят школьное «на первый второй рассчитайся!»? Вот именно в этот момент шеренга вашего класса и являлась реализацией паттерна «итератор», хотя в программировании это конечно более функциональное понятие, но суть примерно та же. «Итератор» предоставляет правила доступа к списку каких-либо объектов независимо от того, что это за объекты. То есть не важно, какой…
https://abap-blog.ru/osnovy-abap/oop/iterator-iterator/
abap-blog.ru
ABAP Blog | Итератор (Iterator)
Метафора Все помнят школьное «на первый второй рассчитайся!»? Вот именно в этот момент шеренга вашего класса и являлась реализацией паттерна «итератор», хотя в
Абстрактная фабрика (Abstract factory) (от 01.05.2016)
Метафора Метафора паттерна описывается его названием. Когда вам необходима бутылка колы, вам не нужно при этом знать, как их производят на фабрике. Достаточно сказать «дайте мне колы», а фабрика уже возвращает вам бутылку. Каким образом создать эту бутылку остается полностью на совести фабрики. Предназначение фабрики в том, чтобы можно было бы в любой момент…
https://abap-blog.ru/osnovy-abap/oop/abstraktnaya-fabrika/
Метафора Метафора паттерна описывается его названием. Когда вам необходима бутылка колы, вам не нужно при этом знать, как их производят на фабрике. Достаточно сказать «дайте мне колы», а фабрика уже возвращает вам бутылку. Каким образом создать эту бутылку остается полностью на совести фабрики. Предназначение фабрики в том, чтобы можно было бы в любой момент…
https://abap-blog.ru/osnovy-abap/oop/abstraktnaya-fabrika/
abap-blog.ru
ABAP Blog | Абстрактная фабрика (Abstract factory)
Метафора Метафора паттерна описывается его названием. Когда вам необходима бутылка колы, вам не нужно при этом знать, как их производят на фабрике. Достаточно сказать «дайте мне колы», а фабрика уже возвращает вам бутылку. Каким образом создать эту бутылку…
Фабричный метод (Factory method) (от 01.05.2016)
Назначение Паттерн решает задачу определения некоторого интерфейса по созданию класса, конкретную реализацию которого определяют дочерние классы, реализующие данный интерфейс. В отличие от абстрактной фабрики, фабричный метод оперирует созданием одного единственного объекта, а не семейства. Данный паттерн имеет несколько версий реализации, мы рассмотрим реализацию через статический метод в базовом классе. В такой реализации в статический…
https://abap-blog.ru/osnovy-abap/oop/fabrichnyj-metod/
Назначение Паттерн решает задачу определения некоторого интерфейса по созданию класса, конкретную реализацию которого определяют дочерние классы, реализующие данный интерфейс. В отличие от абстрактной фабрики, фабричный метод оперирует созданием одного единственного объекта, а не семейства. Данный паттерн имеет несколько версий реализации, мы рассмотрим реализацию через статический метод в базовом классе. В такой реализации в статический…
https://abap-blog.ru/osnovy-abap/oop/fabrichnyj-metod/
abap-blog.ru
ABAP Blog | Фабричный метод (Factory method)
Назначение Паттерн решает задачу определения некоторого интерфейса по созданию класса, конкретную реализацию которого определяют дочерние классы, реализующие данный интерфейс. В отличие от абстрактной фабрики, фабричный метод оперирует созданием одного единственного…