Patterns | ||
.gitattributes | ||
.gitignore | ||
LICENSE | ||
README.md |
🔱 Шаблоны проектирования 🔱
Описание содержимого 💼
- ⌛ Определения: class, abstract class, struct, interface, record
- ⌛ Разбор: принципы SOLID, наследование, типы Dictionary, Unit тестирование
- ⌛ Бонус: решение LetCode задач
- 😈 Такие паттерны как:
🌐 Behavioral - Поведенческие [11]🌐
Паттерн | Краткое определение |
---|---|
💢 ChainOfResponsibility - Цепочка обязанностей | 🔎 Избегает связывание отправителя запроса с его получателем, давая возможность обработать запрос более чем одному объекту. |
💢 Command - Команда | 🔎 Инкапсулирует запрос в виде объекта позволяя передавать их клиентам в качестве параметров, ставить в очередь, логировать, а также поддерживать отмену операций. |
💢 Interpreter - Интерпретатор | 🔎 Получая формальный язык, определяет представление его грамматики и интерпретатор, использующий это представление для обработки выражений языка. |
💢 Iterator - Итератор | 🔎 Предоставляет способ последовательного доступа к множеству, независимо от его внутреннего устройства. |
💢 Mediator - Посредник | 🔎 Определяет объект инкапсулирующий способ взаимодействия объектов. Обеспечивает слабую связь, избавляя их от необходимости ссылаться друг на друга и даёт возможность независимо изменять их взаимодействие. |
💢 Memento - Хранитель | 🔎 Не нарушая инкапсуляцию, определяет и сохраняет внутреннее состояние объекта и позволяет позже восстановить объект в этом состоянии. |
💢 Observer - Наблюдатель | 🔎 Определяет зависимость один ко многим между объектами так, что когда один меняет своё состояние, все зависимые объекты оповещаются и обновляются автоматически. |
💢 State - Состояние | 🔎 Позволяет объекту изменять своё поведение в зависимости от внутреннего состояния. |
💢 Strategy - Стратегия | 🔎 Определяет группу алгоритмов, инкапсулирует их и делает взаимозаменяемыми. Позволяет изменять алгоритм независимо от клиентов, его использующих. |
💢 TemplateMethod - Шаблонный метод | 🔎 Определяет алгоритм, некоторые этапы которого делегируются подклассам. Позволяет подклассам переопределить эти этапы, не меняя структуру алгоритма. |
💢 Visitor - Посетитель | 🔎 Представляет собой операцию, которая будет выполнена над объектами группы классов. Даёт возможность определить новую операцию без изменения кода классов, над которыми эта операция производитcя. |
💡 Creational - Порождающие [6]💡
Паттерн | Краткое определение |
---|---|
💢 AbstractFactory - Абстрактная фабрика | 🔎 Предоставляет интерфейс для создания групп связанных или зависимых объектов, не указывая их конкретный класс. |
💢 Builder - Строитель | 🔎 Разделяет создание сложного объекта и его инициализацию так, что одинаковый процесс построения может может создавать объекты с разным состоянием. |
💢 FactoryMethod - Фабричный метод | 🔎 Определяет интерфейс для создания объекта, но позволяет подклассам решать, какой класс создавать. Позволяет делегировать создание класса объектам класса. |
💢 FluentBuilder - Гибкий(плавный, текучий) строитель | 🔎 Позволяет упростить процесс создания сложных объектов с помощью методов-цепочек, которые наделяют объект каким-то определенным качеством. |
💢 Prototype - Прототип | 🔎 Определяет несколько видов объектов, чтобы при создании использовать объект-прототип и создаёт новые объекты, копируя прототип (техника клонирования объектов). |
💢 Singleton - Одиночка | 🔎 Гарантирует что класс имеет только один экземпляр и представляет глобальную точку доступа к нему. |
🏩 Structural - Структурные [7]🏩
Паттерн | Краткое определение |
---|---|
💢 Adapter - Адаптер | 🔎 Конвенртирует интерфейс класса в другой интерфейс, ожидаемый клиентом. Позволяет классам с разными интерфейсами работать вместе. |
💢 Bridge - Мост | 🔎 Разделяет абстракцию и реализацию так, чтобы они могли изменяться независимо друг от друга. |
💢 Composite - Компоновщик | 🔎 Компонует объекты в древовидную структуру по принципу "часть-целое", представляя их в виде иерархии. Позволяет клиенту одинаково обращаться как к отдельному, так и к целому поддереву. |
💢 Decorator - Декоратор | 🔎 Динамически предоставляет объекту дополнительные возможности. Представляет собой гибкую альтернативу наследованию для расширения функциональности. |
💢 Facade - Фасад | 🔎 Предоставляет единый интерфейс к группе интерфейсов подсистемы. Определяет высокоуровневый интерфейс, делая систему проще для использования. |
💢 Flyweight - Приспособленец | 🔎 Благодаря совместному использованию, поддерживает эффективную работу с большим количеством объектов. (для оптимизации работы с памятью) |
💢 Proxy - Заместитель | 🔎 Предоставляет объект-заместитель другого объекта для контроля доступа к нему. |
✨Dvurechensky✨