Что такое паттерн?

Паттерн проектирования — это часто встречающееся решение определённой проблемы при проектировании архитектуры программ.

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

Типы Паттернов

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