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

@anothertechrock
Download Telegram
Если у кого-то есть идеи для улучшения контента и можетt помочь в ведении канала, добавления, оформления постов за оплату - напишите @aldrson.
👍8
Шаблон проектирования Abstract Factory

Шаблон Абстрактная фабрика относится к классу порождающих паттернов. Его основное назначение - предоставить интерфейс для создания семейства взаимосвязанных объектов, не указывая конкретные классы этих объектов.

Этот шаблон стоит использовать, если:
- ваша система должна быть независимой от способа создания новых объектов
- создаваемые объекты должны использоваться вместе и быть взаимосвязанными.

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

Смотреть реализацию
👍15🔥2
Паттерн Фасад похож на паттерн ... тем, что замещает сложную подсистему и может сам её инициализировать. Но в отличие от паттерна Фасад, паттерн ... имеет тот же интерфейс, что его служебный объект, благодаря чему их можно взаимозаменять.
Anonymous Quiz
32%
адаптер
37%
декоратор
31%
заместитель
👍3
Личный опыт: два кейса миграции

Senior Software Engineer PHP рассказал, как им в компании удалось сделать реиндекс в приложении для знакомств на 25 млн. пользователей.

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

Читать статью
👍5
Шаблон проектирования Mediator

Посредник относится к поведенческим паттернам. Он позволяет уменьшить связанность множества классов между собой, перемещая эти связи в один класс-посредник.

Представьте себе контроль трафика в аэропорту: все решения о том, какие самолеты могут взлетать или садиться, принимает диспетчер. Для этого все сообщения не пересылаются между самолетами напрямую, а поступают в башню управления. Такой централизованный контроллер и есть «медиатор».

Медиатор выступает в качестве посредника в общении между различными модулями, инкапсулируя их взаимодействие.

Смотреть реализацию
👍18
Шаблон проектирования Flyweigth

Приспособленец (также - Легковес) - структурный паттерн проктирования. Он позволяет вместить большее количество объектов в отведенную оперативную память.

Основная идея паттерна — различие между внутренним и внешним состоянием объекта. Внешнее состояние передается клиентом, использующим приспособленца, в некотором контексте. Внутреннее состояние хранится непосредственно в приспособленце и позволяет разделять их. Под разделением понимается возможность одновременной работы нескольких клиентов с одним и тем же приспособленцем.

Смотреть реализацию
👍10🔥2
Шаблон проектирования Command

Команда - один из поведенческих шаблонов, добавляющий слой абстракции между действием и объектом, который это действие вызывает. Пример - кнопка и действие, которое выполняется при нажатии на эту кнопку.

Паттерн преобразовывает запрос на выполнение действия в отдельный объект-команду.

Поскольку команды - это объекты, с ними можно проводить любые операции, которые в принципе возможны для объектов. Например, их можно передавать как аргументы при вызове методов, ставить в очередь и логировать.

Смотреть реализацию
👍11😁1
Шпаргалка по шаблонам проектирования

Описание 23-х шаблонов проектирования из книги "Design Patterns" от Банды четырех. Каждый пункт содержит короткое описание паттерна и UML-диаграмму.

Читать статью
🔥18
Вопросы и ответы для подготовки к собеседованию

Авторская подборка ответов к вопросам, которые могут задать на собеседовании Java-разработчику.

Читать статью
🔥3
Вопрос с собеседования

В чем разница между процедурным программированием и ООП?

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

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

В чем разница между процедурным программированием и ООП?

Ответ:

Процедурное программирование:

- Основано на функциях
- Определяет данные для всей программы
- В нем нет возможности повторного использования кода
- Следует концепции нисходящего программирования
- Природа языка сложна
- Трудно изменять, расширять и поддерживать код


Объектно-ориентированное программирование:

- Основано на реальных объектах
- Инкапсулирует данные
- Обеспечивает больше возможностей для повторного использования кода
- Следует парадигме программирования «снизу вверх»
- Код менее сложен по своей природе, поэтому его легче модифицировать, расширять и поддерживать

#interview
👎23👍14
ООП паттерн Visitor

Рассматриваем поведенческий паттерн Visitor с примерами на Scala.

Читать статью
👍1
Топ-5 архитектурных паттернов для распределённых систем

Распределённые приложения позволяют веб-приложениям с огромной аудиторией оставаться реактивными. Чтобы эффективно проектировать эти системы, программисты используют фундаментальные блоки — паттерны распределённых систем.

В этой статье рассматриваем пять архитектур распределённых систем, их плюсы, минусы и области применения.

Читать статью
Шаблон проектирования Factory Method

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

Используется, когда:

- классу заранее неизвестно, объекты каких подклассов ему нужно создать
- обязанности делегируются подклассу, а знания о том, какой подкласс принимает эти обязанности, локализованы
- создаваемые объекты родительского класса специализируются подклассами

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

Смотреть реализацию
🔥61
Вопрос с собеседования

Что такое KISS?

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

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

Что такое KISS?

Ответ:

KISS (аббр. от Keep it short and simple или Keep it simple, stupid) - это принцип проектирования и программирования, запрещающий использование более сложных средств, чем необходимо. Принцип декларирует простоту системы в качестве основной цели и/или ценности.

#interview
👍12
Архитектура программного обеспечения переоценена, простой и понятный дизайн — недооценен

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

Читать статью
Паттерн ООП «Хранитель»

«Хранитель» (Memento), также известный как Снимок – поведенческий паттерн проектирования. Он позволяет определять, сохранять, а также восстанавливать предыдущие состояния объектов без нарушения принципа инкапсуляции.

Давайте рассмотрим этот паттерн на примерах.

Читать статью
🔥4
Вопрос с собеседования

В чем смысл ООП? Зачем применять такой подход?

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

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

В чем смысл ООП? Зачем применять такой подход?

Ответ:

ООП позволяет повторно использовать код. Данные и код связаны вместе с помощью инкапсуляции. ООП имеет возможности для сокрытия данных, поэтому частные данные могут храниться и сохранять конфиденциальность. Задачи могут быть разделены на различные части, что упрощает их решение. Концепция полиморфизма обеспечивает гибкость, так как одна сущность может иметь несколько форм.

#interview
👎15👍4
Шаблон проектирования Composite

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

Достоинства паттерна:

- в систему легко добавлять новые примитивные или составные объекты, так как паттерн Composite использует общий базовый класс Component
- код клиента имеет простую структуру – примитивные и составные объекты обрабатываются одинаковым образом
- паттерн позволяет легко обойти все узлы древовидной структуры

Смотреть реализацию
6👍1