Перейти к содержимому
Фёдор Башинский

Блог

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

Серия статей о классических паттернах проектирования GoF с примерами кода на PHP — от Фабричного метода до Компоновщика.

Порождающие паттерны

  1. 1

    Фабричный метод

    Разбираем порождающий паттерн «Фабричный метод»: зачем он нужен, как устроен и как выглядит на практике в PHP.

  2. 2

    Абстрактная фабрика

    Разбираем порождающий паттерн «Абстрактная фабрика»: зачем он нужен, чем отличается от Фабричного метода и как выглядит на практике в PHP.

  3. 3

    Строитель

    Разбираем порождающий паттерн «Строитель»: как избавиться от телескопических конструкторов и собирать сложные объекты пошагово на PHP.

  4. 4

    Прототип

    Разбираем порождающий паттерн «Прототип»: как копировать сложные объекты вместо повторного дорогого создания, на примерах PHP с clone и __clone().

  5. 5

    Одиночка

    Разбираем порождающий паттерн «Одиночка»: как гарантировать единственный экземпляр класса на PHP и почему этот паттерн считают спорным.

Структурные паттерны

  1. 1

    Адаптер

    Разбираем структурный паттерн «Адаптер»: как подружить несовместимые интерфейсы без изменения существующего кода, на примерах PHP.

  2. 2

    Мост

    Разбираем структурный паттерн «Мост»: как развести две независимые иерархии классов через композицию вместо наследования, на примерах PHP.

  3. 3

    Компоновщик

    Разбираем структурный паттерн «Компоновщик»: как работать с деревом объектов «часть-целое» через единый интерфейс, на примерах PHP.

  4. 4

    Декоратор

    Разбираем структурный паттерн «Декоратор»: как добавлять объекту новые обязанности через цепочку обёрток с общим интерфейсом, не плодя подклассы под каждую комбинацию, на примерах PHP.

  5. 5

    Фасад

    Разбираем структурный паттерн «Фасад»: как спрятать сложную подсистему из множества классов за одним простым интерфейсом, на примерах PHP.

  6. 6

    Легковес

    Разбираем структурный паттерн «Легковес»: как экономить память на множестве похожих объектов за счёт разделения общего состояния, на примерах PHP.

  7. 7

    Заместитель

    Разбираем структурный паттерн «Заместитель» (Proxy): как контролировать доступ к объекту через обёртку с тем же интерфейсом — отложенная инициализация, проверка прав, кэширование — на примерах PHP.

Поведенческие паттерны

  1. 1

    Цепочка обязанностей

    Разбираем поведенческий паттерн «Цепочка обязанностей» (Chain of Responsibility): как передать запрос по цепочке обработчиков, пока один из них не возьмёт его на себя, вместо разрастающегося if/elseif — на примерах PHP.

  2. 2

    Команда

    Разбираем поведенческий паттерн «Команда» (Command): как превратить запрос в самостоятельный объект с методами execute() и undo(), отвязав отправителя от получателя и получив отмену, очередь и журнал действий бесплатно — на примерах PHP.

  3. 3

    Итератор

    Разбираем поведенческий паттерн «Итератор» (Iterator): как обходить коллекцию, не раскрывая её внутреннее устройство, и подключать разные способы обхода без изменения самой коллекции — на примерах PHP.

  4. 4

    Посредник

    Разбираем поведенческий паттерн «Посредник» (Mediator): как убрать прямые связи между объектами, знающими друг о друге напрямую, и свести всё взаимодействие через один центральный объект — на примерах PHP.

  5. 5

    Снимок

    Разбираем поведенческий паттерн «Снимок» (Memento): как сохранить и восстановить внутреннее состояние объекта, не раскрывая его детали объекту, который хранит историю изменений — на примерах PHP.

  6. 6

    Наблюдатель

    Разбираем поведенческий паттерн «Наблюдатель» (Observer): как оповещать неограниченный список подписчиков об изменении объекта, не привязывая его к их конкретным классам — на примерах PHP.

  7. 7

    Состояние

    Разбираем поведенческий паттерн «Состояние» (State): как убрать ветвления по статусу объекта, вынеся поведение каждого статуса в отдельный класс, который сам решает, куда перейти дальше — на примерах PHP.

  8. 8

    Стратегия

    Разбираем поведенческий паттерн «Стратегия» (Strategy): как вынести взаимозаменяемые алгоритмы в отдельные классы с общим интерфейсом и подставлять нужный без ветвления в клиентском коде — на примерах PHP.

  9. 9

    Шаблонный метод

    Разбираем поведенческий паттерн «Шаблонный метод» (Template Method): как зафиксировать общий скелет алгоритма в базовом классе, оставив конкретные шаги на усмотрение подклассов — на примерах PHP.

  10. 10

    Посетитель

    Разбираем поведенческий паттерн «Посетитель» (Visitor): как добавлять новые операции над набором разнородных классов, не меняя сами эти классы, через двойную диспетчеризацию — на примерах PHP.