Паттерн проектирования — это часто встречающееся решение определённой проблемы при проектировании архитектуры программ.
В отличие от готовых функций или библиотек, паттерн нельзя просто взять и скопировать в программу. Паттерн представляет собой не какой-то конкретный код, а общую концепцию решения той или иной проблемы, которую нужно будет ещё подстроить под нужды вашей программы.
Типы Паттернов
- Порождающие
- Singleton - гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
- Factory Method - определяет интерфейс для создания объектов некоторого класса, но непосредственное решение о том, объект какого класса создавать происходит в подклассах.
- Abstract Factory - позволяет создавать семейства связанных объектов, не привязываясь к конкретным классам создаваемых объектов.
- Prototype - позволяет создавать объекты на основе уже ранее созданных объектов-прототипов, не вдаваясь в подробности их реализации.
- Структурные
- Composite - позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.
- Decorator - позволяет динамически подключать к объекту дополнительную функциональность.
- Facade - позволяет скрыть сложность системы с помощью предоставления упрощенного интерфейса для взаимодействия с ней.
- Поведенческие
- Stratagy - определяет семейство схожих алгоритмов и помещает каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять прямо во время исполнения программы.
- Observer - создаёт механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах.
- Visitor - позволяет добавлять в программу новые операции, не изменяя классы объектов, над которыми эти операции могут выполняться.
- Command - превращает запросы в объекты, позволяя передавать их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций.