Pull to refresh

Заметки про паттерны проектирования

Reading time2 min
Views5.3K
Вашему вниманию, я хотел бы предложить заметки, которые я для себя оставлял при изучении шаблонов проектирования.
Хочу сразу оговорить тот момент, что вы в данной статье не встретите всех паттернов, и если эта статья вам покажется интересной, то я буду продолжать.
Ну, поехали!

Паттерн «Стратегия» определяет семейство алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость. Он позволяет модифицировать алгоритмы независимо от их использования на стороне клиента. Также паттерн «Стратегия» применяется для реализации разных вариантов поведения.

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

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

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

Паттерн «Абстрактная фабрика» предоставляет интерфейс создания семейств взаимосвязанных или взаимозависимых объектов, без указания их конкретных классов. Фабричный метод основан на наследовании: создание объектов делегируется субклассам, реализующих фабричный метод для создания объектов. Абстрактная фабрика основана на композиции: создание объектов реализуется в методе, доступ к которому осуществляется через интерфейс фабрики. Задача фабричного метода — перемещение создания экземпляра в субклассы. Задача Абстрактной фабрики — создание семейств взаимосвязанных объектов без зависимости от их конкретных классов.

Паттерн «Одиночка» направлен на создание уникальных объектов, существующих в одном экземпляре.

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

Паттерн «Адаптер» преобразует интерфейс класса к другому интерфейсу, на который рассчитан клиент. Адаптер обеспечивает совместную работу классов, невозможную в обычных условиях из-за несовместимости интерфейсов.

Паттерн «Фасад» предоставляет унифицированный интерфейс к группе интерфейсов подсистемы

Паттерн «Фасад» не только упрощает интерфейс, но и обеспечивает логическую изоляцию клиента от подсистемы, состоящей из множества компонентов. Фасад применяется для упрощения, а адаптер — для преобразования интерфейса к другой форме. Этот паттерн предотвращает появление сильных связей между клиентом и подсистемой.

Паттерн «Шаблонный метод» задает скелет алгоритма в методе, оставляя определение реализации некоторых шагов субклассам. Субклассы могут переопределять некоторые части алгоритма без изменения его структуры.

Всем спасибо за внимание!
Tags:
Hubs:
-23
Comments9

Articles