Pattern Guru. Шаблоны проектирования. Архитектура ПО
Open in Telegram
Патерны программирования. Архитектура ПО. Микросервисы @anothertechrock
Show more3 142
Subscribers
No data24 hours
-47 days
-2430 days
Posts Archive
Архитектура программного обеспечения переоценена, простой и понятный дизайн — недооценен
Автор поделился своим взглядом на проектирование крупномасштабных систем, основанном на собственном практическом опыте работы в Uber и Microsoft.
Читать статью
Что нужно знать, чтобы профессионально проектировать микросервисную архитектуру? Обсудим 🗓 13 сентября в 20:00 мск на открытом уроке «Паттерны аутентификации и авторизации» в OTUS.
На открытом уроке рассмотрим:
- различные паттерны аутентификации и авторизации
- сессионную аутентификацию на основе кук и токенов (jwt)
- работу identity провайдеров
👨💻 Ведущий — Евгений Непомнящий, опытный C++ и Java разработчик.
👉🏻 Пройдите вступительный тест, чтобы зарегистрироваться!
Занятие дает возможность предварительно попробовать новый онлайн-курс «Microservice architecture» для разработчиков и администраторов, которые хотят вырасти до архитектора ПО.
Вопрос с собеседования
Что такое KISS?
Ответ:
KISS (аббр. от Keep it short and simple или Keep it simple, stupid) - это принцип проектирования и программирования, запрещающий использование более сложных средств, чем необходимо. Принцип декларирует простоту системы в качестве основной цели и/или ценности.
#interview
Вопрос с собеседования
Что такое KISS?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Шаблон проектирования Factory Method
Фабричный метод — порождающий паттерн проектирования. Он определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.
Используется, когда:
- классу заранее неизвестно, объекты каких подклассов ему нужно создать
- обязанности делегируются подклассу, а знания о том, какой подкласс принимает эти обязанности, локализованы
- создаваемые объекты родительского класса специализируются подклассами
Применяйте шаблон Фабричный метод в случае, когда хотите без проблем внедрять в вашу программу новые объекты с новыми конфигурациям для взаимодействия с основной бизнес-логикой.
Смотреть реализацию
📌 Хотите знать продвинутые техники построения архитектуры?
📚 В День знаний, 1 сентября в 20:00 мск состоится открытый урок «Паттерны отказоустойчивости и масштабируемости микросервисной архитектуры».
🔥 На занятии мы разберем ограничения и возможности микросервисной архитектуры, проведем обзор паттернов микросервисной архитектуры, рассмотрим три оси масштабирования, подходы stateless vs stateful, шкалу резервирования и отказоустойчивости, graceful degradation и индикаторы SLI, SLO, SLA.
🦾 Вебинар проведет Анатолий Бурнашев, эксперт с опытом 20+ лет на проектах заказной разработки в ИТ.
💻 Больше полезных знаний, необходимых архитектору ПО, ждет вас на онлайн-курсе «Software Architect» OTUS.
💣 Для участия пройдите вступительный тест
Топ-5 архитектурных паттернов для распределённых систем
Распределённые приложения позволяют веб-приложениям с огромной аудиторией оставаться реактивными. Чтобы эффективно проектировать эти системы, программисты используют фундаментальные блоки — паттерны распределённых систем.
В этой статье рассматриваем пять архитектур распределённых систем, их плюсы, минусы и области применения.
Читать статью
ООП паттерн Visitor
Рассматриваем поведенческий паттерн Visitor с примерами на Scala.
Читать статью
Вопрос с собеседования
В чем разница между процедурным программированием и ООП?
Ответ:
Процедурное программирование:
- Основано на функциях
- Определяет данные для всей программы
- В нем нет возможности повторного использования кода
- Следует концепции нисходящего программирования
- Природа языка сложна
- Трудно изменять, расширять и поддерживать код
Объектно-ориентированное программирование:
- Основано на реальных объектах
- Инкапсулирует данные
- Обеспечивает больше возможностей для повторного использования кода
- Следует парадигме программирования «снизу вверх»
- Код менее сложен по своей природе, поэтому его легче модифицировать, расширять и поддерживать
#interview
Вопрос с собеседования
В чем разница между процедурным программированием и ООП?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Вопросы и ответы для подготовки к собеседованию
Авторская подборка ответов к вопросам, которые могут задать на собеседовании Java-разработчику.
Читать статью
Вопрос с собеседования
Назовите поведенческие шаблоны и кратко опишите их.
Ответ:
Поведенческие шаблоны характеризуют способы взаимодействия классов или объектов между собой.
К поведенческим шаблонам относятся:
- Chain of Responsibility (Цепочка Обязанностей) - организует независимую от объекта-отправителя цепочку не знающих возможностей друг друга объектов-получателей, которые передают запрос друг другу (object that can fulfill a request);
- Command (Команда) - используется для определения по некоторому признаку объекта конкретного класса, которому будет передан запрос для обработки (when and how a request is fulfilled);
- Iterator (Итератор) - позволяет последовательно обойти все элементы коллекции или другого составного объекта, не зная деталей внутреннего представления данных (how an aggregate's elements are accessed, traversed);
- Mediator (Посредник) - позволяет снизить число связей между классами при большом их количестве, выделяя один класс, знающий все о методах других классов (how and which objects interact with each other);
- Memento (Хранитель) - сохраняет текущее состояние объекта для дальнейшего восстановления (what private information is stored outside an object, and when);
- Observer (Наблюдатель) - позволяет при зависимости между объектами типа «один ко многим» отслеживать изменения объекта (number of objects that depend on another object; how the dependent objects stay up to date);
- State (Состояние) - позволяет объекту изменять свое поведение за счет изменения внутреннего объекта состояния (states of an object);
- Strategy (Стратегия) - задает набор алгоритмов с возможностью выбора одного из классов для выполнения конкретной задачи во время создания объекта (an algorithm);
- Template Method (Шаблонный Метод) - создает родительский класс, использующий несколько методов, реализация которых возложена на производные классы (steps of an algorithm);
- Visitor (Посетитель) - представляет операцию в одном или нескольких связанных классах некоторой структуры, которую вызывает специфичный для каждого такого класса метод в другом классе (operations that can be applied to object(s) without changing their class(es));
- Interpreter (Интерпретатор) - для определенного способа представления информации определяет правила (grammar and interpretation of a language).
#interview
Вопрос с собеседования
Назовите поведенческие шаблоны и кратко опишите их.
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Шпаргалка по шаблонам проектирования
Описание 23-х шаблонов проектирования из книги "Design Patterns" от Банды четырех. Каждый пункт содержит короткое описание паттерна и UML-диаграмму.
Читать статью
Какие есть особенности у микросервисной архитектуры? Обсудим 🗓 29 августа в 20:00 мск на открытом урок «Принципы организации микросервисов. Типы взаимодействий» с Владиславом Родиным, экспертом по Java Enterprise разработке.
На занятии мы проанализируем плюсы и минусы микросервисов, а также посмотрим, какие инструменты используются для построения микросервисов.
👉🏻 Пройдите вступительное тестирование, чтобы записаться на урок — https://otus.pw/EqU9/
Больше нового о работе с высокой нагрузкой вы сможете узнать, если продолжите обучение на онлайн-курсе «Highload Architect» от OTUS.
Шаблон проектирования Command
Команда - один из поведенческих шаблонов, добавляющий слой абстракции между действием и объектом, который это действие вызывает. Пример - кнопка и действие, которое выполняется при нажатии на эту кнопку.
Паттерн преобразовывает запрос на выполнение действия в отдельный объект-команду.
Поскольку команды - это объекты, с ними можно проводить любые операции, которые в принципе возможны для объектов. Например, их можно передавать как аргументы при вызове методов, ставить в очередь и логировать.
Смотреть реализацию
Шаблон проектирования Flyweigth
Приспособленец (также - Легковес) - структурный паттерн проктирования. Он позволяет вместить большее количество объектов в отведенную оперативную память.
Основная идея паттерна — различие между внутренним и внешним состоянием объекта. Внешнее состояние передается клиентом, использующим приспособленца, в некотором контексте. Внутреннее состояние хранится непосредственно в приспособленце и позволяет разделять их. Под разделением понимается возможность одновременной работы нескольких клиентов с одним и тем же приспособленцем.
Смотреть реализацию
Шаблон проектирования Mediator
Посредник относится к поведенческим паттернам. Он позволяет уменьшить связанность множества классов между собой, перемещая эти связи в один класс-посредник.
Представьте себе контроль трафика в аэропорту: все решения о том, какие самолеты могут взлетать или садиться, принимает диспетчер. Для этого все сообщения не пересылаются между самолетами напрямую, а поступают в башню управления. Такой централизованный контроллер и есть «медиатор».
Медиатор выступает в качестве посредника в общении между различными модулями, инкапсулируя их взаимодействие.
Смотреть реализацию
Как создавать отказоустойчивые и масштабируемые системы? Одна их стратегий для этого — шардирование. Если вам интересна эта тема, приходите 🗓 21 июня в 20:00 на открытый урок «Шардирование в микросервисной архитектуре».
На открытом уроке мы с экспертом:
- Рассмотрим виды шардинга
- Проанализируем стратегии шардирования
- Разберем консистентное шардирование, поиск, вычисления, хранение
- Узнаем, как правильно делить данные
👉🏻 Пройдите вступительный тест, чтобы записаться на урок!
Еще больше полезных знаний для разработчиков и администраторов будет ждать вас на онлайн-курсе «Microservice architecture» OTUS.
Шаблон проектирования Bridge
Мост относится к классу структурных паттернов. Он позволяет отделить абстракцию от реализации, благодаря чему становится возможно изменять код в каждой ветке по отдельности.
Паттерн Мост полезен там, где часто меняется не только сам класс, но и то, что он делает.
Смотреть реализацию
Available now! Telegram Research 2025 — the year's key insights 
