Шаблони проектування
Загальні відомості
Шаблони (або патерни) проектування описують типові способи вирішення проблем, що часто зустрічаються при проектуванні програм і програмних систем.
Основна користь від використання шаблонів полягає у зниженні складності розробки за рахунок готових абстракцій на вирішення цілого класу проблем. Шаблон дає рішенню своє ім'я, що полегшує комунікацію між розробниками, дозволяючи посилатися на відомі шаблони. Таким чином, за рахунок шаблонів проводиться уніфікація деталей рішень: модулів, елементів проекту, знижується кількість помилок.
Шаблони проектування поділяються як за рівнями застосування, т ак і за типами, які застосовуються на конкретному рівні застосування.
Архітектурні шаблони
Архітектурні шаблони є ширшим поняттям, ніж шаблони проєктування, які охоплюють компоненти або частини програми. В архітектурних шаблонах можуть використовуватися декілька шаблонів проєктування.
- [Top 10 Architectural Patterns — newsletter.techworld-with-milan.com(https://newsletter.techworld-with-milan.com/p/top-10-architectural-patterns)
- 10 Most Popular Software Architecture Patterns — echoinnovateit.com
- Стили архитектуры — learn.microsoft.com
- Самые важные архитектурные шаблоны, которые нужно знать — habr.com
- Краткий обзор 10 популярных архитектурных шаблонов приложений — medium.com
Класичні шаблони проектування
Таблиця за групами
Породжувальні, Creational | Структурні, Structural | Поведінкові, Behavioral | |
---|---|---|---|
Клас | Фабричний метод, Factory method | Адаптер (клас), Adapter | Інтерпретатор, Interpreter |
Об’єкт | Абстрактна фабрика, Abstract Factory | Адаптер (об’ект), Adapter | Ланцюжок обов’язків, Chain of Responsibility |
Будівельник, Builder | Міст, Bridge | Команда, Command | |
Прототип, Prototype | Компонувальник, Composite | Ітератор, Iterator | |
Одинак, Singleton | Декоратор, Decorator | Посередник, Mediator | |
Текучий інтерфейс, Fluent Interface | Фасад, Facade | Знімок, Memento | |
Легковаговик, Flyweight | Спостерігач, Observer | ||
Замісник, Proxy | Стан, State | ||
Стратегія, Strategy | |||
Відвідувач, Visitor | |||
Шаблонний метод, Template Method |
Про шаблони класів
Шаблони класів визначають відносини між класами та їх підкласами.
Отже, шаблони класів мають тенденцію використовувати успадкування встановлення відносин. На відміну від шаблонів об'єктів та відносин між об'єктами, шаблони класів зазвичай фіксують відносини під час компіляції. Вони менш гнучкі та динамічні та менш підходять для поліморфних підходів.
Про шаблони об'єктів
Шаблони об'єктів визначають відносини між об'єктами.
Загалом, мета шаблону об'єкта полягає в тому, щоб дозволити використання екземплярів різних класів в тому самому місці шаблону. Шаблони об'єктів дозволяють уникнути фіксації класу, що виконує це завдання під час компіляції. Натомість фактичний клас об'єкта може бути обраний під час виконання. Шаблони об'єктів переважно використовують композицію або агрегацію об'єктів встановлення відносин між об'єктами.
Популярні шаблони
-
Породжувальні:
- Одинак (Singleton)
- Фабричний метод (Factory Method)
- Будівельник (Builder)
- Текучий інтерфейс (Fluent Interface)
-
Структурні:
- Фасад (Facade)
- Адаптер (Adapter)
-
Поведінкові:
- Спостерігач (Observer)
- Стратегія (Strategy)
-
Design Patterns in C# With Real-Time Examples — dotnettutorials.net