Skip to content

Dana299/patterns

Repository files navigation

Паттерны проектирования

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

  1. Адаптер

  2. Мост

    Разделяет один или несколько классов на две отдельные иерархии — абстракцию и реализацию, позволяя изменять их независимо друг от друга. Абстракция будет делегировать работу одному из объектов реализаций, и их можно будет взаимозаменять, при условии что все они будут следовать общему интерфейсу. Клиентский код не имеет прямого доступа к объектам реализации и работает только с абстракциями.

  3. Фасад

  4. Заместитель (прокси)

    Позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.

  5. Легковес

  6. Компоновщик

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

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

  1. Цепочка обязанностей

    Позволяет передавать запросы последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передать запрос дальше по цепи.

  2. Команда

  3. Итератор

  4. Посредник

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

  5. Снимок

  6. Наблюдатель

  7. Состояние

    Позволяет объектам менять поведение в зависимости от состояния. Когда код класса содержит множество похожих друг на друга блоков "if-else", целесообразно логику каждой ветки вынести в объект состояния, на который будет ссылаться первоначальный объект и которому он будет делегировать часть работы.

  8. Стратегия

    Определяет семейство схожих алгоритмов, которые часто изменяются или расширяются, и помещает их в собственные классы. Выполнение алгоритма класс будет делегировать объекту стратегии.

  9. Шаблонный метод

  10. Посетитель

    Позволяет добавлять в программу новые операции, не изменяя класс объектов, над которыми эти операции могут выполняться.

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

  1. Фабричный метод

    Определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.

  2. Абстрактная фабрика

    Позволяет создавать семейства связанных объектов, не привязываясь к конкретным классам создаваемых объектов.

  3. Строитель

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

  4. Прототип

  5. Синглтон

Сравнение паттернов

Мост VS Стратегия

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

Прокси VS Декоратор

Прокси предоставляет клиенту тот же интерфейс, а декоратор - расширенный интерфейс. Декоратор используется для расширения функциональности, а прокси - как правило для ограничения доступа.

About

Design patterns in python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages