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

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

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

Структурный паттерн Фасад (англ. Facade) помогает скрыть способ реализации сложной системы и предоставляет клиенту простой интерфейс взаимодействия с ней.

Другими словами, данный паттерн проектирования используется в качестве “обертки”, скрывающей детали реализации.

Фасад полезен, если вы используете какую-то сложную библиотеку со множеством подвижных частей, но вам нужна только часть её возможностей.

🗂 Код на Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👌2👍1🙏1
🔥24 июня в 20.00 мск. приглашаем на открытый урок: "Отказоустойчивый и высоко-доступный кластер RabbitMQ"

На вебинаре разберём практические подходы к созданию отказоустойчивой и высоко-доступной очереди сообщений для высоконагруженных систем.

📌 Что будет:
— Запуск и настройка кластера: Quorum Queues и Mirrored Queues (синхронная репликация)
— Синхронизация очередей и обеспечение согласованности
— Dead Letter Queue + правильные настройки durability
— Гарантии доставки для Producer: баланс между надёжностью и производительностью
— Asynchronous cluster-to-cluster message routing: Exchange Federation и Shovels

🎯 После вебинара вы сможете:
— Самостоятельно развернуть отказоустойчивый кластер RabbitMQ
— Настраивать Quorum Queues и Mirrored Queues под разные сценарии
— Правильно работать с Dead Letter Queues и гарантиями доставки
— Организовывать межкластерное взаимодействие сообщений
— Проектировать надёжные асинхронные коммуникации в микросервисной архитектуре

👉 Регистрация открыта: https://vk.cc/cYRBlr

Вебинар приурочен к старту курса «Высоконагруженные системы: архитектура и масштабирование».

🎁При покупке курса вы получите в подарок мини-курс по Kafka, который поможет подготовиться к собеседованию в бигтех

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🔥3👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥1
Шаблоны проектирования простым языком

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

Порождающие: https://tprg.ru/patterns-1
Структурные: https://tprg.ru/patterns-2
Поведенческие: https://tprg.ru/patterns-3

#паттерны
This media is not supported in your browser
VIEW IN TELEGRAM
⚠️ Научитесь международному стандарту построения архитектуры предприятия. Начните обучение на курсе «Архитектура корпорации. Togaf 10».

Вебинар 1: «Новшества языка ArchiMate 4.0»
8 июля в 20:00 мск

Программа вебинара:
1. Отличие метамоделей ArchiMate 4.0 от ArchiMate 3.2.
2. Практические рекомендации и практические визуализации по миграции существующих моделей
3. Ответы на вопросы в прямом эфире


Вебинар 2: «Новшества языка ArchiMate 4.0»
15 июля в 20:00 мск

Программа вебинара:

1. Роль бизнес-слоя в корпоративной архитектуре и его место в TOGAF 10.
2. Основные элементы ArchiMate 3.2 для моделирования бизнес-аспектов
3. Практический пример описания базовых бизнес-процессов организации с ArchiMate.

Вебинар 3: «Новшества языка ArchiMate 4.0»
21 июля в 20:00 мск

Программа вебинара:
Разберём, где именно в архитектуре скрываются данные, как они связаны с процессами и системами, а также почему управление данными становится важным элементом Data-Driven подхода.

Записывайтесь ➡️ https://vk.cc/cZfDUj

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1🙏1
🕯 Паттерн Proxy (Прокси)

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

Использование:

🔹 Когда необходимо контролировать доступ к ресурсоемким объектам или операциям.
🔹 Для добавления дополнительной функциональности без изменения исходного объекта.

Преимущества:

1️⃣ Позволяет контролировать доступ к реальному объекту, например, для ленивой инициализации или кэширования. Это может улучшить производительность, так как ресурсоемкие объекты создаются только тогда, когда они действительно нужны.

2️⃣ Позволяет контролировать доступ к объектам, добавляя проверки перед вызовом методов. Это полезно для управления доступом в сетевых приложениях или для защиты данных.

3️⃣ Позволяет оптимизировать работу с удаленными объектами, минимизируя количество вызовов или обрабатывая их асинхронно. Это снижает нагрузку на систему и повышает скорость работы приложения.

4️⃣ Может использоваться для логирования или отслеживания вызовов методов реального объекта, не внося изменений в сам объект. Это упрощает мониторинг и отладку системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
Фабричный методэто порождающий паттерн проектирования, который определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.

from __future__ import annotations
from abc import ABC, abstractmethod


class Creator(ABC):
"""
Класс Создатель объявляет фабричный метод, который должен возвращать объект
класса Продукт. Подклассы Создателя обычно предоставляют реализацию этого
метода.
"""

@abstractmethod
def factory_method(self):
"""
Обратите внимание, что Создатель может также обеспечить реализацию
фабричного метода по умолчанию.
"""
pass

def some_operation(self) -> str:
"""
Также заметьте, что, несмотря на название, основная обязанность
Создателя не заключается в создании продуктов. Обычно он содержит
некоторую базовую бизнес-логику, которая основана на объектах Продуктов,
возвращаемых фабричным методом. Подклассы могут косвенно изменять эту
бизнес-логику, переопределяя фабричный метод и возвращая из него другой
тип продукта.
"""

# Вызываем фабричный метод, чтобы получить объект-продукт.
product = self.factory_method()

# Далее, работаем с этим продуктом.
result = f"Creator: The same creator's code has just worked with {product.operation()}"

return result


"""
Конкретные Создатели переопределяют фабричный метод для того, чтобы изменить тип
результирующего продукта.
"""


class ConcreteCreator1(Creator):
"""
Обратите внимание, что сигнатура метода по-прежнему использует тип
абстрактного продукта, хотя фактически из метода возвращается конкретный
продукт. Таким образом, Создатель может оставаться независимым от конкретных
классов продуктов.
"""

def factory_method(self) -> Product:
return ConcreteProduct1()


class ConcreteCreator2(Creator):
def factory_method(self) -> Product:
return ConcreteProduct2()


class Product(ABC):
"""
Интерфейс Продукта объявляет операции, которые должны выполнять все
конкретные продукты.
"""

@abstractmethod
def operation(self) -> str:
pass


"""
Конкретные Продукты предоставляют различные реализации интерфейса Продукта.
"""


class ConcreteProduct1(Product):
def operation(self) -> str:
return "{Result of the ConcreteProduct1}"


class ConcreteProduct2(Product):
def operation(self) -> str:
return "{Result of the ConcreteProduct2}"


def client_code(creator: Creator) -> None:
"""
Клиентский код работает с экземпляром конкретного создателя, хотя и через
его базовый интерфейс. Пока клиент продолжает работать с создателем через
базовый интерфейс, вы можете передать ему любой подкласс создателя.
"""

print(f"Client: I'm not aware of the creator's class, but it still works.\n"
f"{creator.some_operation()}", end="")


if __name__ == "__main__":
print("App: Launched with the ConcreteCreator1.")
client_code(ConcreteCreator1())
print("\n")

print("App: Launched with the ConcreteCreator2.")
client_code(ConcreteCreator2())
🔥2👍1🥰1
NAITION AI: Спрос на разработку с ИИ-агентами вырос в сотни раз за год. Свежий Stanford AI Index 2026 показал, что навык AI Agents стал №1 среди самых востребованных инженерных скиллов.
• Упоминания «Agentic systems» в вакансиях за год выросли на 10854% (!) — это не опечатка.
• «AI agents» — +2113%.
• Вывод простой: компаниям массово нужны не «написатели кода», а архитекторы мультиагентных систем.Главный скилл в 2026 году — строить долгоживущие автономные процессы, управлять контекстом и верифицировать работу десятков агентов.


Рынок можно догнать!
Naition запускает новый, обновленный в июле поток буткемпа по AI-driven разработке уже 21 июля.

Максимум пользы получат middle+ разработчики и команды, нацеленные на апгрейд производительности инженерного процесса.
IT-специалисты других профессий тоже могут себя попробовать.

За 12 недель вы встроите ИИ во все процессы:
• Соберёте своё ядро — MCP под задачи, RAG, мультиагентную систему с сабагентами и оркестрацией.
• Внедрите агентов в кодовые базы на 100К+ строк — автоматизируете индексацию кода, рефакторинг и изменение архитектуры.
• Научитесь масштабировать AI-практики на всю команду.
Ведут практики с 15-20 годами опыта: ex-Yandex Cloud, staff-инженер Google, CEO Symbioway (центр по найму разработчиков) — люди из эпицентра трансформации рынка.


Формат: 17 уроков, 5 модулей, живые вечерние эфиры + практика между ними. Минимум теории, максимум разборов кейсов и групповой практики прямо на вебинаре.

👉 Забронировать место — naition.ai
А по промокоду PATTERNGURU для подписчиков — скидка 20% до 20 июля.

Что ещё стоит знать:
• Приведёте друга или коллегу — вы вместе получите доп. скидку 10% сверху (в сумме 30%).
• Можно оплатить частями, а начать даже с одного модуля.
• Если вы бизнес, можно прокачать всю команду разом.
2👍2😁2🔥1
TypeScript: паттерны проектирования

Читать
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Топ-9 паттернов для обмена данными и взаимодействия между компонентами/сервисами в распределенных системах

🔹 Peer-to-Peer
🔹 API Gateway
🔹 Pub-Sub
🔹 Request-Response
🔹 Event Sourcing
🔹 ETL
🔹 Batching
🔹 Streaming Processing
🔹 Orchestration

👉 Источник

#инфографика
🔥2🌚1