Pattern Guru. Шаблоны проектирования. Архитектура ПО – Telegram
Pattern Guru. Шаблоны проектирования. Архитектура ПО
5.88K subscribers
213 photos
3 videos
121 links
Патерны программирования.
Архитектура ПО.
Микросервисы

@anothertechrock
Download Telegram
🚩 Шаблон проектирования Наблюдатель

🟣 Подробное описание паттерна

Наблюдатель (англ. Observer) — поведенческий паттерн проектирования. Определяет зависимость типа "один ко многим" между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.

🟪 Когда применять:

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

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

🗂 Код на Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👌1
🚩 Шаблон проектирования Прототип

🟣 Подробное описание паттерна

Прототип (англ. Prototype) — порождающий паттерн проектирования. Он позволяет копировать объекты, не вдаваясь в подробности их реализации.

🟪 Когда использовать Прототип?

🔎 Когда конкретный тип создаваемого объекта должен определяться динамически во время выполнения.

🔎 Когда нежелательно создание отдельной иерархии классов фабрик для создания объектов-продуктов из параллельной иерархии классов (как это делается, например, при использовании паттерна Абстрактная фабрика).

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

🗂 Код на Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🎉1
🚩 Шаблон проектирования Стратегия

🟣 Подробное описание паттерна

Стратегия (англ. Strategy) относится к поведенческим шаблонам проектирования. Цель этого паттерна - выделить схожие алгоритмы, решающие конкретную задачу. Реализация алгоритмов выносится в отдельные классы и предоставляется возможность выбирать алгоритмы во время выполнения программы.

🙂Аналогия из жизни🙂

Вам нужно добраться до аэропорта. Можно доехать на автобусе, такси или велосипеде. Здесь вид транспорта является стратегией. Вы выбираете конкретную стратегию в зависимости от контекста — наличия денег или времени до отлёта.

🟪 Когда применять?

🔎 Когда вам нужно использовать разные вариации какого-то алгоритма внутри одного объекта.

🔎 Когда у вас есть множество похожих классов, отличающихся только некоторым поведением.

🔎 Когда вы не хотите обнажать детали реализации алгоритмов для других классов.

🔎 Когда различные вариации алгоритмов реализованы в виде развесистого условного оператора. Каждая ветка такого оператора представляет собой вариацию алгоритма.

🗂 Код на Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥1
🚩 Шаблон проектирования Цепочка обязанностей

🟣 Подробное описание паттерна

Цепочка обязанностей (англ. Chain of Responsibility) — поведенческий паттерн проектирования. Он позволяет передавать запросы по цепочке обработчиков последовательно. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи.

🙂Аналогия из жизни🙂

Самый наглядный пример шаблона — компьютерная сеть. Пусть в сетевой модели есть 4 типа обработчиков — сеть, маршрутизатор, форвардер и сервер. Также есть всего один тип запроса — запрос на обработку сервером. Обработчики ведут себя следующим образом: сеть — просто предает по своей среде запрос, маршрутизатор — передает запрос из одной сети в другую, форвардер — передает запрос конкретному хосту, сервер — обрабатывает запрос.

Узлы сети представляют собой конвейер обработчиков. Запрос — конкретное сообщение. Запрос, двигаясь по цепочке, обрабатывается (маршрутизируется, форвардится) каждым ее узлом и передается дальше. До тех пор, пока не будет окончательно обработан сервером.

🗂 Код на Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👌1