Pattern programming with python

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Volodichev/patterns

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

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

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

Читайте также:  What is an infinite loop in java

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

Источник

Оцените статью