Перейти к основному содержимому

Что такое паттерн проектирования

Паттерн проектирования — это названное, проверенное решение задачи, которая постоянно возникает при проектировании программ. Паттерны — не код, который копируют, а формы, которые вы узнаёте: «это задача про обёртку», «это задача про уведомления».

Классический каталог содержит 23 паттерна, собранных четырьмя авторами, известными как Банда четырёх. Знание их даёт две вещи: готовые ответы на типичные задачи и общий словарь — фраза «здесь нужен адаптер» заменяет целый абзац объяснений.


Три семейства

23 паттерна делятся на три семейства:

Порождающие — как создаются объекты: Singleton, Factory Method, Abstract Factory, Builder, Prototype.

Структурные — как части соединяются друг с другом: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.

Поведенческие — как части взаимодействуют между собой: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.

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


Паттерны по-php-шному

Каталог был написан для языков, построенных вокруг классов и наследования, — и PHP один из них. Классы, интерфейсы и наследование напрямую соответствуют классическому каталогу, и все страницы здесь их используют.

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

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