Pattern Guru. Шаблоны проектирования. Архитектура ПО
الذهاب إلى القناة على Telegram
Патерны программирования. Архитектура ПО. Микросервисы @anothertechrock
إظهار المزيد3 141
المشتركون
لا توجد بيانات24 ساعات
-27 أيام
-1930 أيام
أرشيف المشاركات
🟣 Навигация по каналу:
▶️ Одиночка (Singleton)
▶️ Итератор (Iterator)
▶️ Декоратор (Decorator)
▶️ Фасад (Facade)
▶️ Адаптер (Adapter)
▶️ Абстрактная фабрика (Abstract Factory)
▶️ Мост (Bridge)
▶️ Посредник (Mediator)
▶️ Приспособленец (Flyweigth)
▶️ Команда (Command)
▶️ Посетитель (Visitor)
▶️ Фабричный метод (Factory Method)
▶️ Хранитель (Memento)
▶️ Компоновщик (Composite)
▶️ Заместитель (Proxy)
▶️ Наблюдатель (Observer)
▶️ Прототип (Prototype)
▶️ Стратегия (Strategy)
▶️ Цепочка обязанностей (Chain of Responsibility)
▶️ Строитель (Builder)
Вопросы с интервью: #interview
🔥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
🚩 Шаблон проектирования Фасад
🟣 Подробное описание паттерна
Структурный паттерн
Фасад (англ. Facade) помогает скрыть способ реализации сложной системы и предоставляет клиенту простой интерфейс взаимодействия с ней.
Другими словами, данный паттерн проектирования используется в качестве “обертки”, скрывающей детали реализации.
Фасад полезен, если вы используете какую-то сложную библиотеку со множеством подвижных частей, но вам нужна только часть её возможностей.
🗂 Код на PythonЛидеры по работе с данными и ИИ из Альфа-Банка, Сбера, 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
Вопрос с собеседования
Зачем нужна инкапсуляция?
Ответ опубликуем завтра, а пока пишите свои варианты в комментариях!
#interview
6 полезных шаблонов проектирования
🚩 Шаблон проектирования Singleton
🚩 Шаблон проектирования Итератор
🚩 Шаблон проектирования Декоратор
🚩 Шаблон проектирования Фасад
🚩 Шаблон проектирования Адаптер
🚩 Шаблон проектирования Абстрактная фабрика
#полезное
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»:
«Асинхронная обработка данных в высоконагруженных системах»
🗓 Когда: 16 июня, 20:00 (мск)
Когда система выходит на тысячи и миллионы запросов в секунду, синхронная обработка превращается в настоящее узкое горлышко. Асинхронная архитектура помогает снять блокировки, повысить отзывчивость и масштабировать приложение без резкого роста ресурсов.
На вебинаре разберём, как грамотно внедрять асинхронность и строить по-настоящему производительные системы.
Что будет на вебинаре:
— Зачем и когда переходить на асинхронную обработку данных в высоконагруженных проектах
— Очереди сообщений, веб-сокеты и другие инструменты асинхронного взаимодействия
— Реальный архитектурный кейс: от веб-сервера до брокера сообщений и базы данных
— Типичные узкие места асинхронных систем и проверенные способы их устранения
Что вы получите:
— Чёткое понимание принципов асинхронной архитектуры и её влияния на производительность
— Реальные примеры решений, которые можно сразу применять в своих проектах
— Знания, как избегать типичных ошибок и строить стабильные, отказоустойчивые системы
👉 Зарегистрироваться: https://vk.cc/cYtuQf
Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование», где вы научитесь проектировать высоконагруженные системы, способные выдерживать экстремальные нагрузки и работать стабильно в любых условиях.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Это точно поможет тебе в проектировании API
— Если ты только начинаешь, советую стартовать с этого интерактивного роадмапа: Он удобен и на каждом этапе содержит ссылки для изучения подтем.
— 6 самых популярных стилей архитектуры API: которые вам нужно знать (с плюсами, минусами и примерами использования)
— Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)
— Руководство по проектированию сетевых API от Google: Его использовали внутри компании с 2014 года, и оно служит основой при разработке облачных и других API.
— Книга «Паттерны проектирования API: Сотрудник того же Google Джей Гивакс рассказывает о том, как в компании создают масштабируемые и гибкие сервисы. Вы узнаете, как улучшить дизайн самых распространённых API и как действовать в сложных пограничных случаях. Сопровождается иллюстрациями и примеры кода.
С вас лойс 👍
#api
+3
🚩 Шаблон проектирования Декоратор
🟣 Подробное описание паттерна
Структурный паттерн
Декоратор (англ. Decorator) позволяет расширять функциональность без использования наследования.
Дело в том, что механизм наследования имеет несколько проблем:
1⃣ Он статичный, т.е. не дает возможности менять поведение уже существующего объекта.
2⃣ Он не позволяет наследовать поведение нескольких классов одновременно.
Декоратор позволяет обойти эти проблемы. Суть этого шаблона отлично передает его второе название — "обертка". Вы помещаете один объект в другой — обертку. Обертка запускает базовое поведение объекта, а затем что-то добавляет к нему.
🗂 Код на Python🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»:
«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
🕯 Паттерн Proxy (Прокси)
Proxy — это структурный паттерн, который предоставляет объект-заместитель для управления доступом к другому объекту, обеспечивая контроль над его использованием.
Использование:
🔹 Когда необходимо контролировать доступ к ресурсоемким объектам или операциям.
🔹 Для добавления дополнительной функциональности без изменения исходного объекта.
Преимущества:
1⃣ Позволяет контролировать доступ к реальному объекту, например, для ленивой инициализации или кэширования. Это может улучшить производительность, так как ресурсоемкие объекты создаются только тогда, когда они действительно нужны.
2⃣ Позволяет контролировать доступ к объектам, добавляя проверки перед вызовом методов. Это полезно для управления доступом в сетевых приложениях или для защиты данных.
3⃣ Позволяет оптимизировать работу с удаленными объектами, минимизируя количество вызовов или обрабатывая их асинхронно. Это снижает нагрузку на систему и повышает скорость работы приложения.
4⃣ Может использоваться для логирования или отслеживания вызовов методов реального объекта, не внося изменений в сам объект. Это упрощает мониторинг и отладку системы.
🔥Приглашаем на бесплатный урок курса «Архитектор программного обеспечения»:
«API Gateway и не только: шаги к идеальной архитектуре внешних API»
🎓Мы разберём продуманную архитектуру внешних API: какие проблемы возникают при их проектировании, как API Gateway помогает их решать и какие паттерны стоит применять, чтобы сделать взаимодействие с системой удобным, безопасным и масштабируемым.
📚Вопросы вебинара:
- Сложности проектирования API
- Нестабильные каналы, перегрузка, вопросы безопасности и производительности
- Зачем нужен API Gateway
- Проектирование
- Популярные решения и подходы
- Агрегация, адаптация и переиспользование API
- Антипаттерны и типичные ошибки
👉 Регистрация https://otus.pw/szNj/
Реклама ООО «Отус онлайн-образование», ОГРН 1177746618576
Паттерн 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, они всегда будут работать с одним и тем же экземпляром.Паттерн 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, они всегда будут работать с одним и тем же экземпляром.+3
🚩 Шаблон проектирования Заместитель
🟣 Подробное описание паттерна
Заместитель (англ. Proxy) — структурный паттерн проектирования. Он позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.
🟪 Ситуации, когда можно использовать паттерн Заместитель:
🔎 Виртуальный proxy является заместителем объектов, создание которых обходится дорого. Реальный объект создается только при первом запросе/доступе клиента к объекту.
🔎 Удаленный proxy предоставляет локального представителя для объекта, который находится в другом адресном пространстве ("заглушки" в RPC и CORBA).
🔎 Защитный proxy контролирует доступ к основному объекту. "Суррогатный" объект предоставляет доступ к реальному объекту, только вызывающий объект имеет соответствующие права.
🔎 Интеллектуальный proxy выполняет дополнительные действия при доступе к объекту.
🗂 Код на Python#паттерны
Введение
Сегодня мы рассмотрим паттерн проектирования "Абстрактная фабрика".
Классификация
Тип: Порождающий
Определение: Абстрактная фабрика - это порождающий паттерн проектирования, который предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.
Грубо говоря, абстрактная фабрика - это "фабрика фабрик", данный паттерн позволяет решить проблему создания целых семейств связанных объектов, без указания конкретных классов продуктов.
С помощью абстрактной фабрики вы можете предоставить библиотеку объектов не расскрывая их реализацию.
Из чего состоит и как работает данный паттерн
1. Абстрактного класса/Интерфейса абстрактной фабрики. Содержит абстрактные методы которые возвращают абстрактные продукты, связанные одной конпцецией.
class AbstractFactory(ABC):
@abstractmethod
def create_product_a(self):
...
@abstractmethod
def create_product_b(self):
...
2. Конретные фабрики. Конкретные фабрики реализут операции которые создают конкретные продукты.
class ConcreteFactory1(AbstractFactory):
def create_product_a(self):
return ConcreteProductA1()
def create_product_b(self):
return ConcreteProductB1()
class ConcreteFactory2(AbstractFactory):
def create_product_a(self):
return ConcreteProductA2()
def create_product_b(self):
return ConcreteProductB2()
3. Абстрактные классы продуктов. Реализуют интерфейс для всех конретных продуктов своего семейства.
class AbstractProductA(ABC):
@abstractmethod
def very_important_super_function_a(self) -> str:
...
class AbstractProductB(ABC):
@abstractmethod
def very_important_super_function_b(self) -> str:
...
4. Конкретные продукты. Реализуют абстрактные продукты. Продукты одного семейства не могут взаимодействовать, с продуктами другого семейства.
class ConcreteProductA1(AbstractProductA):
def very_important_super_function_a(self) -> str:
return "Product A1"
class ConcreteProductA2(AbstractProductA):
def very_important_super_function_a(self) -> str:
return "Product A2"
class ConcreteProductB1(AbstractProductB):
def very_important_super_function_b(self) -> str:
return "Product B1"
class ConcreteProductB2(AbstractProductB):
def very_important_super_function_b(self) -> str:
return "Product B2"
5. Клиент. Клиентский код работает исключительно с абстрактной фабрикой и абстрактными продуктами.
def client(factory: AbstractFactory) -> str:
return factory.create_product_a().very_important_super_function_a()
for factory in (ConcreteFactory1, ConcreteFactory2, ...):
client(factory)
Плюсы данного паттерна
1. Реализует принцип открытости/закрытости.
2. Упращает поддержку кода.
3. Выделяет код производства продуктов в одно место, упрощая поддержку кода.
Минусы данного паттерна
1. Снижает читаемость программы из-за введения множества дополнительных классов.
Пример и задача
Дед Мороз и Пасхальный кролик не успевают сделать игрушки к празднику, которые они будут дарить детям.
Все существует 3 вида игрушек:
1. Лошадка
2. Зайчик
3. Шарик
Всё было бы просто однако Деду Морозу нужны игрушки в новогоднем стиле, а пасхальному кролику в пасхальном.
Создайте абстрактную фабрику игрушек и спасите эти праздники!
Пример из реального кода
Пример из реального кода предоставил @Tishka17. Он разработал замечательный фреймворк aiogram_dialog для разработки интерактивных диалогов и меню в телеграмм ботах, как обычное приложение с графическим интерфейсом.
Вот здесь он использует данный паттерн: https://github.com/Tishka17/aiogram_dialog/blob/develop/aiogram_dialog/manager/manager_middleware.py#L23
Вот его объяснение, какую задачу он решает в данном случае:Совет на 2026 год — переходите в ML.
Пока обычные разрабы конкурируют с ИИ-копилотами, ML-инженеры эти самые нейронки создают.
В эпоху нейростей это самые востребованые люди в мире программирования. Зарплаты мидлов начинаются от 250 000 ₽, а у сеньоров в BigTech доходят до 700 000 ₽.
А чтобы освоить его всего за 4 месяца без лишней суеты — изучите канал Артема Алехина.
Его бэкграунд: Руководитель команды в Сбере, валютная удаленка. К 22 годам вышел на доход 1 000 000+ ₽ в месяц.
На канале вы найдёте:
— Всё про самые востребованные стеки(Python, ИИ-агенты, NLP) и почему математика — это не страшно, если учить только нужное.
— Как оформить резюме, чтобы оно пролетало через любые LLM-фильтры и ATS-системы прямо к тимлидам.
— Скрипты переговоров, которые помогли его ученикам прыгнуть с 0 до 360к всего за 8 месяцев.
Во времена острой нехватки ML-разработчиков, это лучшее время, чтобы перекатиться. Переходи и изучай: https://t.me/+NmeKLJV36Co0MDVi
Паттерны
В одном репозитории собрано 111 паттернов проектирования. На данный момент это самый популярный репозиторий на языке Java, у него почти 50k звёзд.
Для каждого паттерна есть подробное описание и примеры реализации на Java: https://github.com/iluwatar/java-design-patterns
#паттерны #java
+7
🚩 Шаблон проектирования Абстрактная фабрика
🟣 Подробное описание паттерна
Шаблон
Абстрактная фабрика (англ. Abstract Factory) относится к классу порождающих паттернов. Его основное назначение — предоставить интерфейс для создания семейства взаимосвязанных объектов, не указывая конкретные классы этих объектов.
🟪 Этот шаблон стоит использовать, если:
🔎 Ваша система должна быть независимой от способа создания новых объектов
🔎 Создаваемые объекты должны использоваться вместе и быть взаимосвязанными.
Классы абстрактной фабрики часто реализуются фабричными методами, но могут быть реализованы и с помощью паттерна Prototype.
🗂 Код на Python🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: “Балансировка и геораспределение: как создать быстрое и надёжное приложение для всего мира”
На вебинаре разберём, как крупные компании — такие как Netflix, Amazon и другие, делают свои сервисы доступными для пользователей по всему миру без задержек и сбоев.
Что будет на вебинаре:
— Как работают балансировщики и «умные» прокси.
— Что такое геораспределение и зачем оно критично для масштабируемых сервисов.
— Как грамотно распределять трафик между дата-центрами.
— Частые ошибки при проектировании глобальных систем — и как их избежать.
👉 Зарегистрироваться https://vk.cc/cWFtsA
Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование» , где вы научитесь проектировать системы, способные выдерживать миллионы запросов, и оптимизировать их производительность.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
