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