An open API service indexing awesome lists of open source software.

https://github.com/dvurechensky/patterns-programming

Разбор шаблонов проектирования
https://github.com/dvurechensky/patterns-programming

csharp dvurechenskypro education patterns programming

Last synced: 3 months ago
JSON representation

Разбор шаблонов проектирования

Awesome Lists containing this project

README

        





Typing SVG



Static Badge


🔱 Шаблоны проектирования 🔱

## Описание содержимого 💼

- ⌛ Определения: **class, abstract class, struct, interface, record**
- ⌛ Разбор: **принципы SOLID, наследование, типы Dictionary, Unit тестирование**
- ⌛ Бонус: **решение [LetCode](https://leetcode.com/) задач**
- 😈 Такие паттерны как:
>

🌐 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 - Заместитель
🔎 Предоставляет объект-заместитель другого объекта для контроля доступа к нему.