Pattern Guru. Шаблоны проектирования. Архитектура ПО
3.15K subscribers
194 photos
4 videos
87 links
Патерны программирования.
Архитектура ПО.
Микросервисы

@anothertechrock
Download Telegram
🚩 Шаблон проектирования Мост

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

Мост
(англ. Bridge) относится к классу структурных паттернов. Он позволяет отделить абстракцию от реализации, благодаря чему становится возможно изменять код в каждой ветке по отдельности.

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

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

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

Посредник (англ. Mediator) относится к поведенческим паттернам. Он позволяет уменьшить связанность множества классов между собой, перемещая эти связи в один класс-посредник.

🙂Аналогия из жизни 🙂
Представьте себе контроль трафика в аэропорту: все решения о том, какие самолеты могут взлетать или садиться, принимает диспетчер. Для этого все сообщения не пересылаются между самолетами напрямую, а поступают в башню управления. Такой централизованный контроллер и есть «медиатор».

Mediator выступает в качестве посредника в общении между различными модулями, инкапсулируя их взаимодействие.

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

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

Приспособленец (англ. Flyweight) — структурный паттерн проктирования. Он позволяет вместить большее количество объектов в отведенную оперативную память.

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

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

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

Команда (англ. Command) — один из поведенческих шаблонов, добавляющий слой абстракции между действием и объектом, который это действие вызывает. Пример - кнопка и действие, которое выполняется при нажатии на эту кнопку.

Паттерн преобразовывает запрос на выполнение действия в отдельный объект-команду.

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

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

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

🔎 Когда вы хотите ставить операции в очередь, выполнять их по расписанию или передавать по сети.

🔎 Когда вам нужна операция отмены.

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

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

Посетитель (англ. Visitor) — это поведенческий паттерн проектирования, который позволяет добавлять в программу новые операции, не изменяя классы объектов, над которыми эти операции могут выполняться.

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

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

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

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

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