Code Monkey home page Code Monkey logo

python-patterns's Introduction

Список паттернов проектирования и идиом в 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?

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

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

python-patterns's People

Contributors

faif avatar gyermolenko avatar 0--key avatar rednafi avatar duboviy avatar osscca avatar yarikoptic avatar cclauss avatar hmodaresi avatar mshcruz avatar reem avatar johntyree avatar yhay81 avatar imankulov avatar fluencydoc avatar spookylukey avatar lord63 avatar xingfet avatar lucasloisp avatar mjanos5 avatar diopib avatar washwash avatar jcdenton avatar ijxsid avatar aliciawyy avatar duythinht avatar 2ykwang avatar xuefeng-zhu avatar tolstochenkodaniil avatar tamasgal avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.