patterns icon indicating copy to clipboard operation
patterns copied to clipboard

Паттерны в python

Паттерны в python (Patterns)

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

Порождающие паттерны(Creational Patterns):

беспокоятся о гибком создании объектов без внесения в программу лишних зависимостей.

  • Абстрактная фабрика (Abstract Factory) Семейства связанных объектов.
  • Строитель (Builder) Cложные объекты пошагово. один код для разных объектов.
  • Фабричный метод (Factory Method) Общий интерфейс для подклассов изменет тип объектов.
  • Прототип (Prototype) Копируем объекты, не вдаваясь в подробности реализации.
  • Одиночка (Singleton) Класс имеет только один экземпляр, и глобальную точку доступа.
  • Моностатический синглтон (Borg)
  • Ленивая оценка (Lazy evaluation)
  • Пул объектов (Object pool)

Структурные паттерны(Structural Patterns):

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

  • Адаптер (Adapter) Несовместимые интерфейсы
  • Компоновщик (Composite) Древовидная структуруа
  • Декоратор/оформитель (Decorator/Wrapper) Функциональность через «обёртки».
  • Фасад (Facade) Простой интерфейс к сложной структуре
  • Мост (Bridge) Абстракция + Реализация
  • Легковес/Приспособленец (Flyweight) Разделяя общее состояние объектов
  • Заместитель/прокси/суррогат (Proxy/surrogate) Подставляет объекты-заменители.
  • Трехзвенка (Three-Tier/3-tier)
  • Единая точка входа (Front controller)
  • Модель Отображенин Контроллер(MVC)

Поведенческие паттерны(Behavioral Patterns):

заботятся об эффективной коммуникации между объектами.

  • Команда/действие (Command/action) Передает запросы в объекты как аргументы.
  • Итератор/указатель (Iterator) Последовательный обход элементов составных объектов.
  • Наблюдатель/слушатель (Observer/Listener) Один объект следит за другим.
  • Стратегия (Strategy) Схожие алгоритмы в класс.
  • Посредник (Mediator) Перемещение связей в один класс-посредник.
  • Состояние (State) Меняет поведение в зависимости от состояния.
  • Шаблонный метод (Template Method) Перекладывает ответственность на подклассы не меняя его общей структуры.
  • Цепочка обязанностей (Chain of Responsibility) Запросы по цепочке обработчиков.
  • Снимок/Хранитель (Memento) Снимки состояния объектов.
  • Классная доска (Blackboard)(доска объявлений)
  • Посетитель (Visitor) Новые операции, не меняя классы объектов.
  • Одноразовый посетитель (Single-serving visitor)
  • Иерархический посетитель (Hierarchical visitor)
  • Каталог (Сatalog)
  • Цепь методов (Chaining method)
  • Издатель-подписчик (Publish subscribe/Pub-sub)
  • Спецификация/пределение (Specification)
  • Слуга (Servant)
  • Подчинение (Subsumption)

Other:

  • Внедрение зависимости (Dependency injection)
  • Отложенная инициализация (Lazy initialization)
  • Шаблон делегирования (Delegation pattern)
  • Поиск в графе(Graph search)
  • Машина состояний (Hierarchical State Machine/HSM)
  • Реестр/Журнал записей (Registry)
  • Наследование (Inheritance)
  • Нейтральный объект (Null)
  • Сокрытие (Closure)
  • Пул «одиночек» (Multiton)

Источник.