Skip to content

MLazarevAX/python-patterns

 
 

Repository files navigation

Список паттернов проектирования и идиом в Python.

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

Паттерн Описание
abstract_factory использует обобщенную функцию с конкретными фабриками
borg синглтон с общим состоянием между экземплярами
builder вместо использования нескольких конструкторов, объект-строитель принимает параметры и возвращает созданные объекты
factory делегирует специализированную функцию/метод для создания экземпляров
lazy_evaluation шаблон "ленивого вычисления" свойств в Python
pool предварительно создает и поддерживает группу экземпляров одного типа
prototype использует фабрику и клонирование прототипа для создания новых экземпляров (если создание дорого)

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

Паттерн Описание
3-tier разделение данных <-> бизнес-логика <-> представление (строгие отношения)
adapter адаптирует один интерфейс к другому с использованием белого списка
bridge посредник между клиентом и поставщиком для смягчения изменений интерфейса
composite позволяет клиентам обращаться к отдельным объектам и композициям одинаково
decorator оборачивает функциональность другой функциональностью для изменения результатов
facade использует один класс в качестве API к нескольким другим
flyweight прозрачно повторно использует существующие экземпляры объектов с похожим/одинаковым состоянием
front_controller один обработчик запросов, поступающих в приложение
mvc модель <-> представление <-> контроллер (нестрогие отношения)
proxy объект направляет операции на что-то другое

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

Паттерн Описание
chain_of_responsibility применяет цепочку последовательных обработчиков для обработки данных
catalog общие методы будут вызывать различные специализированные методы на основе параметра конструкции
chaining_method продолжает обратный вызов следующего метода объекта
command объединяет команду и аргументы для последующего вызова
iterator обход контейнера и доступ к элементам контейнера
iterator (альтернативная реализация) обход контейнера и доступ к элементам контейнера
mediator объект, который умеет соединять другие объекты и действовать как прокси
memento создает непрозрачный маркер, который можно использовать для возврата к предыдущему состоянию
observer предоставляет обратный вызов для уведомления о событиях/изменениях данных
publish_subscribe источник рассылает события/данные 0+ зарегистрированным слушателям
registry отслеживает все подклассы данного класса
specification бизнес-правила можно повторно комбинировать, объединяя их логическими операциями
state логика организована в нескольких потенциальных состояниях и следующем состоянии, в которое можно перейти
strategy выборочные операции над теми же данными
template объект налагает структуру, но принимает компоненты как плагины
visitor вызывает обратный вызов для всех элементов коллекции

Паттерны проектирования для обеспечения тестируемости:

Паттерн Описание
dependency_injection 3 варианта внедрения зависимостей

Основные паттерны:

Паттерн Описание
delegation_pattern объект обрабатывает запрос, делегируя его второму объекту (делегату)

Другие паттерны:

Паттерн Описание
blackboard архитектурная модель, сбор различных знаний подсистем для создания решения, подход ИИ - не паттерн "банда четырех"
graph_search алгоритмы работы с графами - не паттерн "банда четырех"
hsm иерархическая конечная автоматная машина - не паттерн "банда четырех"

Видеоматериалы

Паттерны проектирования на Python от Петера Ульриха

Себастьян Бучински - Почему вам не нужны паттерны проектирования в Python?

Вам это не нужно!

Подключаемые библиотеки через паттерны проектирования

About

A collection of design patterns/idioms in Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.8%
  • Makefile 1.2%