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

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

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

Заместитель (англ. Proxy) — структурный паттерн проектирования. Он позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.

🟪 Ситуации, когда можно использовать паттерн Заместитель:

🔎 Виртуальный proxy является заместителем объектов, создание которых обходится дорого. Реальный объект создается только при первом запросе/доступе клиента к объекту.

🔎 Удаленный proxy предоставляет локального представителя для объекта, который находится в другом адресном пространстве ("заглушки" в RPC и CORBA).

🔎 Защитный proxy контролирует доступ к основному объекту. "Суррогатный" объект предоставляет доступ к реальному объекту, только вызывающий объект имеет соответствующие права.

🔎 Интеллектуальный proxy выполняет дополнительные действия при доступе к объекту.

🗂 Код на Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Паттерн Singletone с примером на JavaScript

Несмотря на то что в последнее время все больше задач мы обычно решаем в функциональном стиле я хотел бы сегодня вам рассказать о одном из самых распространенных классовых паттернов - синглтон.

И так что это:
Паттерн Singleton означает создание только одного экземпляра класса и доступ к нему через методы-геттеры.

Пример использования:

class Singleton {
 constructor() {
  if (!Singleton.instance) {
   Singleton.instance = this;
  }
  return Singleton.instance;
 }

 someMethod() {
  console.log('Hello from Singleton!');
 }
}

const instance1 = new Singleton();
const instance2 = new Singleton();

instance1.someMethod(); // "Hello from Singleton!"
console.log(instance1 === instance2); // true

В данном примере класс Singleton будет создавать только один экземпляр и все вызовы конструктора будут возвращать ссылку на этот экземпляр. Таким образом, мы можем быть уверены, что где бы ни встретились вызовы методов класса Singleton, они всегда будут работать с одним и тем же экземпляром.
👍1
Паттерн Singletone с примером на JavaScript

Несмотря на то что в последнее время все больше задач мы обычно решаем в функциональном стиле я хотел бы сегодня вам рассказать о одном из самых распространенных классовых паттернов - синглтон.

И так что это:
Паттерн Singleton означает создание только одного экземпляра класса и доступ к нему через методы-геттеры.

Пример использования:

class Singleton {
 constructor() {
  if (!Singleton.instance) {
   Singleton.instance = this;
  }
  return Singleton.instance;
 }

 someMethod() {
  console.log('Hello from Singleton!');
 }
}

const instance1 = new Singleton();
const instance2 = new Singleton();

instance1.someMethod(); // "Hello from Singleton!"
console.log(instance1 === instance2); // true

В данном примере класс Singleton будет создавать только один экземпляр и все вызовы конструктора будут возвращать ссылку на этот экземпляр. Таким образом, мы можем быть уверены, что где бы ни встретились вызовы методов класса Singleton, они всегда будут работать с одним и тем же экземпляром.
🔥Приглашаем на бесплатный урок курса «Архитектор программного обеспечения»:
«API Gateway и не только: шаги к идеальной архитектуре внешних API»

🎓Мы разберём продуманную архитектуру внешних API: какие проблемы возникают при их проектировании, как API Gateway помогает их решать и какие паттерны стоит применять, чтобы сделать взаимодействие с системой удобным, безопасным и масштабируемым.

📚Вопросы вебинара:

- Сложности проектирования API
- Нестабильные каналы, перегрузка, вопросы безопасности и производительности
- Зачем нужен API Gateway
- Проектирование
- Популярные решения и подходы
- Агрегация, адаптация и переиспользование API
- Антипаттерны и типичные ошибки

👉 Регистрация https://otus.pw/szNj/

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

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

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

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

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

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

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

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

4⃣ Может использоваться для логирования или отслеживания вызовов методов реального объекта, не внося изменений в сам объект. Это упрощает мониторинг и отладку системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»:

«Polyglot Persistence: как современные системы живут с десятками баз данных»

🗓 Когда: 2 июня, 20:00 (мск)

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

На вебинаре разберём, как грамотно сочетать PostgreSQL, ClickHouse, Redis, Kafka и Elasticsearch, чтобы система оставалась быстрой, согласованной и отказоустойчивой.

Что будет на вебинаре:
— Принципы Polyglot Persistence и роль каждой базы в современной архитектуре
— Как связать PostgreSQL, ClickHouse, Redis и Kafka без потери согласованности данных
— Event-driven подход, CDC и Outbox-паттерн в высоконагруженных системах
— Архитектурные приёмы построения надёжных data-платформ, способных выдерживать миллионы операций

Кому будет полезно:
— Backend-разработчикам, желающим понимать устройство современных систем
— Архитекторам и DevOps-инженерам, решающим задачи масштабирования и согласованности
— Всем, кто работает с большими данными и хочет эффективно комбинировать разные типы хранилищ

👉 Зарегистрироваться: https://vk.cc/cYdHaS

Бесплатное занятие приурочено к курсу «Highload Architect», на котором вы научитесь проектировать сложные высоконагруженные системы, грамотно выбирать и сочетать технологии хранения и обработки данных.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1👍1
🚩 Шаблон проектирования Декоратор

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

Структурный паттерн Декоратор (англ. Decorator) позволяет расширять функциональность без использования наследования.

Дело в том, что механизм наследования имеет несколько проблем:

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

Декоратор позволяет обойти эти проблемы. Суть этого шаблона отлично передает его второе название — "обертка". Вы помещаете один объект в другой — обертку. Обертка запускает базовое поведение объекта, а затем что-то добавляет к нему.

🗂 Код на Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Это точно поможет тебе в проектировании API

Если ты только начинаешь, советую стартовать с этого интерактивного роадмапа: Он удобен и на каждом этапе содержит ссылки для изучения подтем.

6 самых популярных стилей архитектуры API: которые вам нужно знать (с плюсами, минусами и примерами использования)

Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)

Руководство по проектированию сетевых API от Google: Его использовали внутри компании с 2014 года, и оно служит основой при разработке облачных и других API.

— Книга «Паттерны проектирования API: Сотрудник того же Google Джей Гивакс рассказывает о том, как в компании создают масштабируемые и гибкие сервисы. Вы узнаете, как улучшить дизайн самых распространённых API и как действовать в сложных пограничных случаях. Сопровождается иллюстрациями и примеры кода.

С вас лойс 👍

#api
This media is not supported in your browser
VIEW IN TELEGRAM
👍4🔥1
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»:

«Асинхронная обработка данных в высоконагруженных системах»

🗓 Когда: 16 июня, 20:00 (мск)

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

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

Что будет на вебинаре:
— Зачем и когда переходить на асинхронную обработку данных в высоконагруженных проектах
— Очереди сообщений, веб-сокеты и другие инструменты асинхронного взаимодействия
— Реальный архитектурный кейс: от веб-сервера до брокера сообщений и базы данных
— Типичные узкие места асинхронных систем и проверенные способы их устранения

Что вы получите:
— Чёткое понимание принципов асинхронной архитектуры и её влияния на производительность
— Реальные примеры решений, которые можно сразу применять в своих проектах
— Знания, как избегать типичных ошибок и строить стабильные, отказоустойчивые системы

👉 Зарегистрироваться: https://vk.cc/cYtuQf

Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование», где вы научитесь проектировать высоконагруженные системы, способные выдерживать экстремальные нагрузки и работать стабильно в любых условиях.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1🙏1
Вопрос с собеседования

Зачем нужна инкапсуляция?

Ответ опубликуем завтра, а пока пишите свои варианты в комментариях!

#interview
Лидеры по работе с данными и ИИ из Альфа-Банка, Сбера, X5 Tech, Т-Банка, Ozon Fintech, Банка России, Дикси, Ситидрайва, Lamoda, Черкизово и других компаний расскажут, как данные и искусственный интеллект помогают ускорять бизнес в финтехе, ритейле, промышленности, транспорте и агросекторе.

9 июля на форуме Data Day 2026:

💰 Тренды AI и данных «из первых уст». На какие технологии и подходы делают ставку лидеры рынка?

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

💰 Практика внедрения AI и data-driven подходов в финтехе, ритейле, логистике, промышленности и агросекторе.

💰 Как находить новые точки роста, используя опыт цифровых лидеров и сильные data-команды.

💰 AI-hub: выставка и центр экспертизы готовых AI-решений и автономных агентов для бизнеса.

Выступают:

Руслан Булатов, Банк России. Директор Департамента финансовых технологий.
Дмитрий Криволапов, Lamoda. Директор департамента по данным и аналитике.
Алексей Бондаренко, Газпромбанк. Вице-президент — начальник департамента управления данными.
Дмитрий Рузанов, Альфа-Банк. Директор департамента разработки моделей.
Павел Денисенко, X5 Tech. Директор департамента развития платформы больших данных.
– Артём Летин, ВТБ. Начальник управления моделирования КИБ и СМБ, вице-президент.
Валерий Поляков, Т-Банк. Лидер по данным группы Т-Технологии (Chief Data Officer).
Александр Лукьянов, ДОМ РФ Технологии. Генеральный директор.
Валентина Рудик, Ozon Fintech. Руководитель розничного кредитования.
– Андрей Скачёк, М.Видео, Директор по маркетингу

И другие.

Вас ждет самый масштабный Data Day:
🔥 5 отраслевых треков (Финтех, Агропром, Путешествия и Транспорт, Ритейл, Персональная эффективность)
🔥 1500+ участников
🔥 60+ спикеров

9 июля, «Бизнес. Техноград», ВДНХ, Москва.

Присоединяйтесь! Форум соберет экспертов по данным и AI из банков, ритейла, телекома, транспорта, агропрома, ИТ-компаний и индустриальных лидеров.

👉 Программа и регистрация

Реклама. ООО «Регламент». ИНН 7708323273. erid:2W5zFJJ3D6q
🔥1🤔1
🚩 Шаблон проектирования Фасад

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

Структурный паттерн Фасад (англ. 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
🔥2👍1