🎉 Ура! После трёх лет работы, я наконец выпустил английскую версию книги о паттернах! Вот она »

ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ на Python

Каталог Python-примеров

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

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

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

Abstract Factory

Позволяет создавать семейства связанных объектов, не привязываясь к конкретным классам создаваемых объектов.

Строитель

Строитель

Builder

Позволяет создавать сложные объекты пошагово. Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов.

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

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

Factory Method

Определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.

Прототип

Прототип

Prototype

Позволяет копировать объекты, не вдаваясь в подробности их реализации.

Одиночка

Одиночка

Singleton

Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.

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

Адаптер

Адаптер

Adapter

Позволяет объектам с несовместимыми интерфейсами работать вместе.

Мост

Мост

Bridge

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

Компоновщик

Компоновщик

Composite

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

Декоратор

Декоратор

Decorator

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

Фасад

Фасад

Facade

Предоставляет простой интерфейс к сложной системе классов, библиотеке или фреймворку.

Легковес

Легковес

Flyweight

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

Заместитель

Заместитель

Proxy

Позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.

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

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

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

Chain of Responsibility

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

Команда

Команда

Command

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

Итератор

Итератор

Iterator

Даёт возможность последовательно обходить элементы составных объектов, не раскрывая их внутреннего представления.

Посредник

Посредник

Mediator

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

Снимок

Снимок

Memento

Позволяет делать снимки состояния объектов, не раскрывая подробностей их реализации. Затем снимки можно использовать, чтобы восстановить прошлое состояние объектов.

Наблюдатель

Наблюдатель

Observer

Создаёт механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах.

Состояние

Состояние

State

Позволяет объектам менять поведение в зависимости от своего состояния. Извне создаётся впечатление, что изменился класс объекта.

Стратегия

Стратегия

Strategy

Определяет семейство схожих алгоритмов и помещает каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять прямо во время исполнения программы.

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

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

Template Method

Определяет скелет алгоритма, перекладывая ответственность за некоторые его шаги на подклассы. Паттерн позволяет подклассам переопределять шаги алгоритма, не меняя его общей структуры.

Посетитель

Посетитель

Visitor

Позволяет создавать новые операции, не меняя классы объектов, над которыми эти операции могут выполняться.