В данном репозитории собраны конспекты и реализации многих популярных паттернов проектирования с яркими примерами с UML-схемами,
а также конспекты ООП, SOLID и PEP8.
(в папке python файлы .py с реализацией паттернов,
описываемые в конспектах .md)
Ниже вы можете наблюдать краткие определения со ссылками на соответствующие страницы:
Принципы ООП - для создания гибких и модульных программ.
Принципы SOLID - для написания качественного кода
и улучшения читаемости и расширяемости кода.
PEP8 - официальный стиль написания кода на Python для лучшей читаемости и единообразия.
(делегируют инстанцирование другому объекту)
-
Фабричный метод - делегирует создание объектов подклассам.
(пример с разными кузнецами, которые делают мечи) -
Абстрактная фабрика — делегирует создание семейств объектов подклассам.
(пример с разными кузнецами, которые делают снаряжение, состоящее из шлема, меча и брони) -
Строитель - отделяет процесс поэтапного создания сложного объекта от его представления.
(пример строителей головы, тела и ног осьминога и собаки) -
Прототип - создает новый объект клонированием уже существующего.
(пример меню с блюдами спагетти и гамбургера) -
Синглтон - ограничивает создание объекта только одним экземпляром.
(пример: может быть только один писатель)
(изменяют интерфейс уже существующих объектов)
-
Адаптер - приводит несовместимый интерфейс к нужному через доп. класс.
(пример со старым и новым плеером) -
Декоратор - расширяет поведение объекта без наследования, оборачивая его.
(пример с отправкой сообщения, к которой пристраивается логирование и шифрование) -
Мост - отделяет абстракцию от реализации, позволяя им развиваться независимо.
() -
Компоновщик - группирует объекты в древовидную структуру.
() -
Фасад - упрощает сложную подсистему через единый интерфейс.
() -
Proxy (Заместитель) — представляет другой объект и контролирует доступ к нему.
()
(определяют взаимодействие между объектами)
-
Наблюдатель - оповещает подписчиков об изменении состояния.
(пример с публикатором постов, который оповещает о создании нового поста разных сервисов-наблюдателей) -
Стратегия - позволяет переключаться между алгоритмами из одного семейства.
(пример с навигатором с разным способом добраться: на машине, автобусе или велосипеде) -
Команда -
() -
Цепочка обязанностей — передаёт запрос по цепочке обработчиков.
()
- Внедрение зависимости - предоставление внешней зависимости инжектору, который связывает клиент и сервис.
(пример с отправкой клиентом сообщения через почту и мессенджер; клиент просто отправляет сообщение, сам "не зная" через какой сервис,
а отдельный инжектор внедряет/подменяет ему этот сервис)