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

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

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

Цепочка обязанностей (англ. 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
Шаблон проектирования Строитель

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

Строитель (англ. Builder) — порождающий паттерн проектирования. Он позволяет создавать сложные объекты пошагово. Строитель дает возможность использовать один и тот же код строительства для получения разных представлений объектов.

От абстрактной фабрики отличается тем, что делает акцент на пошаговом конструировании объекта. Строитель возвращает объект на последнем шаге, тогда как абстрактная фабрика возвращает объект немедленно.

🟪 Паттерн Строитель может помочь в решении следующих задач:

🔎 В системе могут существовать сложные объекты, которые сложно или невозможно создать за одну операцию. Требуется поэтапное построение объектов с контролем результатов выполнения каждого этапа.

🔎 Данные должны иметь несколько представлений. Допустим, есть некоторый исходный документ в формате RTF (Rich Text Format), в общем случае содержащий текст, графические изображения и служебную информацию о форматировании (размер и тип шрифтов, отступы и др.). Если этот документ в формате RTF преобразовать в другие форматы (например, Microsoft Word или простой ASCII-текст), то полученные документы и будут представлениями исходных данных.

🗂 Код на Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥1👌1
⁉️ Как на практике соединить бизнес-цели и IT-архитектуру? Ответ прост: моделировать потоки ценности с помощью ArchiMate.

Открытый вебинар 24 сентября — это уникальная возможность понять, как Business Capability Map помогает организовать деятельность компании и как эти карты можно трансформировать в потоки создания ценности (Value Stream). Эксперт поделится реальными кейсами и разберёт, как эффективно визуализировать и управлять процессами с помощью ArchiMate.

Курс «Archimate» — это ваш шанс научиться работать с ключевыми бизнес-методами, которые становятся основой архитектуры компании. Освойте создание Capability Map и Value Stream, и применяйте эти инструменты для улучшения бизнес-процессов.

➡️ Пройдите вебинар и получите скидку на курс «Archimate»: https://vk.cc/cPz7iR

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

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

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

#interview
Вопрос с собеседования

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

Ответ:

Инкапсуляция позволяет скрыть данные и обернуть данные и код, который работает над ними, в единое целое.

#interview
1
🔥 От разработчика до архитектора высоконагруженных систем! 🚀

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

Вы научитесь:

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

📌 Пройдите тест и получите скидку на курс! Подробности уточняйте у менеджера

👉 Пройти тест https://vk.cc/cPCE8D

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1😁1
Это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе.
Anonymous Quiz
0%
Singleton
2%
Factory Method
3%
Template Method
93%
Adapter
1%
Strategy
🔥 25 сентября в 20:00 мск — открытый вебинар в OTUS!

О чём?

В мире высоконагруженных систем с сотнями сервисов управление конфигурацией, сервис-дискавери и координация компонентов — это настоящий вызов. Apache ZooKeeper — проверенное решение для создания надёжных и управляемых распределённых систем.

Что разберём:


- ZooKeeper: что это и зачем он нужен в распределённых системах.
- Архитектура: ZNode, лидер-выборы, механизмы согласованности.
- Применение: сервис-дискавери, управление конфигурацией, координация задач.
- Ограничения: сравнение ZooKeeper с Etcd и Consul.
- Практика: реальные кейсы использования в highload-системах.

🎓 После вебинара вы:

- Поймёте, как ZooKeeper решает задачи координации и конфигурации.
- Узнаете, когда использовать ZooKeeper, а когда выбрать Etcd или Consul.

🔧 Присоединяйтесь, чтобы освоить мощный инструмент для построения масштабируемых и отказоустойчивых систем!

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

Бесплатное занятие приурочено к старту курса Highload Architect, обучение на котором позволит освоить решения, которые выдерживают большое количество запросов в секунду и правильно оптимизировать работоспособность серверов

Реклама. ООО «Отус онлайн-образование», ОГРН 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, они всегда будут работать с одним и тем же экземпляром.