Конспект про паттерны проектирования

Автором данных картинок и описаний я не являюсь. Решил коротко для себя собрать часто используемые паттерны тут. Для более глубокого изучения обращайтесь к оригинальному ресурсу https://refactoring.guru

Стратегия

Очень часто используемый паттерн. Его можно везде встретить. Например, Абстрактная фабрика, Фабричный метод основываются на паттерне стратегия.

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

Применимость

  • Когда вам нужно использовать разные вариации какого-то алгоритма внутри одного объекта.
  • Когда у вас есть множество похожих классов, отличающихся только некоторым поведением.
  • Когда вы не хотите обнажать детали реализации алгоритмов для других классов.

 

Шаблонный метод

Шаблонный метод — это поведенческий паттерн проектирования, который определяет скелет алгоритма, перекладывая ответственность за некоторые его шаги на подклассы. Паттерн позволяет подклассам переопределять шаги алгоритма, не меняя его общей структуры.

Паттерн Шаблонный метод предлагает разбить алгоритм на последовательность шагов, описать эти шаги в отдельных методах и вызывать их в одном шаблонном методе друг за другом.

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

Применимость

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

Мое мнение: Я думаю, что можно было бы использовать стратегию вместо шаблонного метода. Но для более менее простых задач думаю можно применять.

комментарии (1)

Камшат Камшат 2019-07-31 13:04:29
Меня зовут Александр, я маркетолог и менеджер проектов с 8-ми летнем опытом. Итак, все мои клиенты в ТОП1, в социальных сетях мы ведем такого клиента как Lamoda. Что я вам предлагаю: взять на себя все необходимое для увеличения ваших продаж: работа с сайтом (при необходимости создание нового), seo-продвижение, настройка и ведение рекламных кампаний, аналитика, продвижение в социальных сетях, работа с площадками (авито и др.). Один человек не может быть мастером во всем и у меня есть команда специалистов с которой мы уже долгие годы. А предложение звучит очень просто: вы получаете отдел маркетинга (в котором есть маркетолог, smm-специалист, дизайнер, программист, директолог, seo-специалист) по стоимости штатного маркетолога. Все прозрачно и понятно: с вами будет сформирован гуглдокумент в котором будут указываться все основные метрики, доступы и аналитика, так же по итогам каждого месяца формируется отчет о результатах за прошедший месяц и формирование плана действий на следующий. Презентация на русском: https://drive.google.com/open?id=17e_kLoXYLccSKGQC9j-1ePh0QFGj_QkT Presentation in English: https://drive.google.com/open?id=19aX56wuineoEfXwGClQwEORkjJWNYwvv КП Комплексное обслуживание: https://drive.google.com/open?id=1sNVydtMZuqZ_jQ5THhHVya5Ox_Sx2Nwp Обязательно прочесть штатный сотрудник vs LeoMarketing: https://drive.google.com/open?id=1Y3f_oOef3mAhBFioJqM5hHBoUz9zsqN6 -- Sincerely, Alexander LeoMarketing Company Mobile phone: +7 (958) 760-31-91 Phone Moscow: +7 (495) 145-20-35 Phone Los Angeles: +1 (323) 686-33-56 E-mail: pr@promotion-leo.com http://promotion-leo.com/ru/