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

@anothertechrock
Download Telegram
Топ-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
Порождающие шаблоны проектирования простым языком

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

Обо всем этом, но простыми словами и с примерами кода - читайте в статье.

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

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

Ситуации, когда можно использовать паттерн Заместитель:

- Виртуальный proxy является заместителем объектов, создание которых обходится дорого. Реальный объект создается только при первом запросе/доступе клиента к объекту
- Удаленный proxy предоставляет локального представителя для объекта, который находится в другом адресном пространстве ("заглушки" в RPC и CORBA)
- Защитный proxy контролирует доступ к основному объекту. "Суррогатный" объект предоставляет доступ к реальному объекту, только вызывающий объект имеет соответствующие права
- Интеллектуальный proxy выполняет дополнительные действия при доступе к объекту.

Смотреть реализацию
👍5
Структурные шаблоны проектирования простым языком

Структурные шаблоны — шаблоны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры.

В этой статье рассматриваем на примерах такие шаблоны, как адаптер, мост, компоновщик, декоратор, фасад, приспособленец, заместитель.

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

Что такое SOLID?

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

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

Что такое SOLID?

Ответ:

SOLID - акроним для пяти основных принципов объектно-ориентированного программирования и проектирования.

Список принципов по порядку: single responsibility, open-closed, Liskov substitution, interface segregation и dependency inversion (русск. - принципы единственной ответственности, открытости/закрытости, подстановки Барбары Лисков, разделения интерфейса и инверсии зависимостей).

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

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

#interview
👍7
Шаблон проектирования Observer

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

Когда применять:

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

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

Каковы основные концепции ООП?

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

#interview
👍4👎1
Вопрос с собеседования

Каковы основные концепции ООП?

Ответ:

- Наследование
- Инкапсуляция
- Полиморфизм
- Абстракция

#interview
👍8👎3
Шаблон проектирования Prototype

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

Когда использовать Прототип?

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

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

Что такое DRY principles?

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

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

Что такое DRY principles?

Ответ:

DRY, Don't repeat yourself (не повторяйся) - это принцип разработки программного обеспечения, нацеленный на снижение повторения информации различного рода, особенно в системах со множеством слоёв абстрагирования.

Простыми словами: НЕ пишите повторяющийся код, используйте принцип абстракции, обобщая простые вещи в одном месте.

#interview