Skip to content

timoncraus/PatternsPython

Repository files navigation

Конспекты паттернов, ООП, SOLID и PEP8

В данном репозитории собраны конспекты и реализации многих популярных паттернов проектирования с яркими примерами с UML-схемами,
а также конспекты ООП, SOLID и PEP8.

(в папке python файлы .py с реализацией паттернов,
описываемые в конспектах .md)

Ниже вы можете наблюдать краткие определения со ссылками на соответствующие страницы:


Принципы ООП - для создания гибких и модульных программ.

Принципы SOLID - для написания качественного кода
и улучшения читаемости и расширяемости кода.

PEP8 - официальный стиль написания кода на Python для лучшей читаемости и единообразия.

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

(делегируют инстанцирование другому объекту)

  • Фабричный метод - делегирует создание объектов подклассам.
    (пример с разными кузнецами, которые делают мечи)

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

  • Строитель - отделяет процесс поэтапного создания сложного объекта от его представления.
    (пример строителей головы, тела и ног осьминога и собаки)

  • Прототип - создает новый объект клонированием уже существующего.
    (пример меню с блюдами спагетти и гамбургера)

  • Синглтон - ограничивает создание объекта только одним экземпляром.
    (пример: может быть только один писатель)

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

(изменяют интерфейс уже существующих объектов)

  • Адаптер - приводит несовместимый интерфейс к нужному через доп. класс.
    (пример со старым и новым плеером)

  • Декоратор - расширяет поведение объекта без наследования, оборачивая его.
    (пример с отправкой сообщения, к которой пристраивается логирование и шифрование)

  • Мост - отделяет абстракцию от реализации, позволяя им развиваться независимо.
    ()

  • Компоновщик - группирует объекты в древовидную структуру.
    ()

  • Фасад - упрощает сложную подсистему через единый интерфейс.
    ()

  • Proxy (Заместитель) — представляет другой объект и контролирует доступ к нему.
    ()

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

(определяют взаимодействие между объектами)

  • Наблюдатель - оповещает подписчиков об изменении состояния.
    (пример с публикатором постов, который оповещает о создании нового поста разных сервисов-наблюдателей)

  • Стратегия - позволяет переключаться между алгоритмами из одного семейства.
    (пример с навигатором с разным способом добраться: на машине, автобусе или велосипеде)

  • Команда -
    ()

  • Цепочка обязанностей — передаёт запрос по цепочке обработчиков.
    ()

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

  • Внедрение зависимости - предоставление внешней зависимости инжектору, который связывает клиент и сервис.
    (пример с отправкой клиентом сообщения через почту и мессенджер; клиент просто отправляет сообщение, сам "не зная" через какой сервис,
    а отдельный инжектор внедряет/подменяет ему этот сервис)

Releases

No releases published

Packages

 
 
 

Contributors

Languages