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

@anothertechrock
Download Telegram
Целью какого паттерна является расширение функциональности класса или же ее изменение без использования механизма наследования?
Anonymous Quiz
12%
Proxy
69%
Decorator
3%
Flyweight
16%
Composite
👍13
Что такое паттерны проектирования и какие паттерны существуют?

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

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

Читать статью
👍19
Какой из перечисленных паттернов применяется в ситуации, когда нужно произвести некоторые действия над всеми объектами структуры в зависимости от фактического типа каждого объекта?
Anonymous Quiz
21%
Visitor
34%
Iterator
24%
Strategy
7%
State
14%
Composite
👎16👍8
Если у кого-то есть идеи для улучшения контента и может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