/DesignPatternsOnPython

Примеры реализации паттернов проектирования на Python

Primary LanguageJupyter Notebook

Design Patterns On Python

Репозиторий содержит реализации паттернов проектирования на Python 3. Всего реализовано 23 классических паттерна.

Паттерны проектирования — модель решения общих (часто встречающихся) проблем дизайна. Она (модель) описывает проблемы и основные подходы к их решению.

Паттерны делают нашу работу:

  • последовательной
  • понятной
  • надежной

Содержимое

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

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

Эти паттерны отвечают за удобное и безопасное создание новых объектов или даже целых семейств объектов:

  • Фабричный метод (factory method) — Определяет общий интерфейс для создания объектов, позволяя подклассам изменять тип создаваемых объектов.
  • Абстрактная фабрика (abstract factory) — Позволяет создавать семейства связанных объектов, не привязываясь к конкретике.
  • Строитель (builder) — Позволяет создавать сложные объекты пошагово.
  • Прототип (prototype) — Позволяет копировать объекты, не вдаваясь в подробности их реализации.
  • Одиночка (singleton) — Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.

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

Эти паттерны отвечают за построение удобных в поддержке иерархий классов:

  • Адаптер (adapter) — Позволяет объектам с несовместимым интерфейсом работать вместе.
  • Мост (bridge) — Разделяет один или несколько классов на две отдельные иерархии — абстракцию и реализацию.
  • Компоновщик (composite) — Позволяет сгруппировать множество объектов в древовидную структуру и работать с ней.
  • Декоратор (decorator) — Позволяет динамически добавлять объектам новую функциональность.
  • Заместитель (proxy) — Позволяет подставлять вместо реальных объектов специальные объекты-заменители.
  • Легковес (flyweight) — Экономит память, разделяя общее состояние объектов между собой.
  • Фасад (facade) — Предоставляет простой интерфейс к сложной системе, классу или фреймворку.

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

Эти паттерны решают задачи эффективного и безопасного взаимодействия между объектами программы:

  • Цепочка обязанностей (chain of responsibility) — Позволяет передавать запросы последовательно по цепочке обработчиков.
  • Итератор (iterator) — Дает возможность последовательно обходить элементы составных объектов, не раскрывая внутреннего представления.
  • Посредник (mediator) — Позволяет уменьшить связанность множества объектов между собой.
  • Снимок (memento) — Позволяет сохранять текущее и восстанавливать прошлые состояния объектов.
  • Наблюдатель (observer) — Позволяет одним объектам следить и реагировать на изменения других объектов.
  • Состояние (state) — Позволяет объектам менять поведение в зависимости от своего состояния.
  • Стратегия (strategy) — Определяет семейство схожих объектов и помещает каждый из них в собственный класс.
  • Шаблонный метод (template method) — Позволяет подклассам переопределять шаги алгоритма, не меняя общей структуры.
  • Посетитель (visitor) — Позволяет добавлять в программу новые операции,не изменяя классы объектов, над которыми эти операции могут выполняться.
  • Команда (command) — Превращает запросы в объекты, которые заключают в себе само действие и его параметры.
  • Интерпретатор (interpreter) — Определяет представление грамматики для заданного языка и интерпретатор предложений этого языка.