Design patterns
.pdfШаблонное
проектирование
Паттерны и антипаттерны
Design patterns
●Паттерн (шаблон) проектирования (Design pattern)
- повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста (wikipedia)
Цели шаблонного проектирования
● Шаблоны инкапсулируют в себе ценные знания для решения задач проектирования, что еще более важно - улучшают его качество
(Design patterns encapsulate valuable knowledge to resolve design problems, and more importantly to improve the design quality)
Hsueh N. L., Kuo J. Y., Lin C. C. Object-oriented design: A goal-driven and pattern-based approach // Software & Systems Modeling. – 2009. – Т. 8. – №. 1. – С. 67-84.
История
●Архитектор Cristopher Alexander, 1970
○Разработал язык паттернов
○Данный язык был предназначен не только для архитекторов
●Alexander et al,1977
○253 паттерна для решения типовых задач в городской архитектуре
●Alexander et al, 1988
○Первый пример применения паттернов в архитектуре
●Beck and Cunningham,1987
○Первое применение паттернов в software engineering
●Gamma et al, 1994 (Gang of four - банда четырех)
○Design Patterns: Elements of Reusable Object-Oriented Software
○23 паттерна, применимых к software engineering
Borchers J. O. A pattern approach to interaction design //
AI & SOCIETY. – 2001. – Т. 15. – №. 4. – С. 359-376.
Элементы шаблона
1.Pattern name
○Идентификатор, который может использоваться для описания проблемы проектирования, ее решений и последствий словом или двумя
2.Problem
○Описывает когда применять шаблон
3.Solution
○Описывает элементы, из которых состоит решение проблемы, их связи, роли и взаимодействие
4.Сonsequences
○Описывает результаты, а так же плюсы и минусы применения шаблона
Категории шаблонов
●В Design patterns описываются три категории шаблонов:
○Порождающие
○Структурные
○Поведенческие
Порождающие шаблоны
●Abstract Factory — Абстрактная фабрика
●Builder — Строитель
●Factory Method — Фабричный метод
●Prototype — Прототип
●Singleton — Одиночка
Структурные шаблоны
●Adapter — Адаптер
●Bridge — Мост
●Composite — Компоновщик
●Decorator — Декоратор
●Facade — Фасад
●Flyweight — Приспособленец
●Proxy — Заместитель
Поведенческие шаблоны
●Chain of responsibility — Цепочка обязанностей
●Command — Команда
●Interpreter — Интерпретатор
●Iterator — Итератор
●Mediator — Посредник
●Memento — Хранитель
●Observer — Наблюдатель
●State — Состояние
●Strategy — Стратегия
●Template — Шаблонный метод
●Visitor — Посетитель
Простейшие паттерны
●Согласно Design Patterns
○Abstract Factory
○Adapter
○Composite
○Decorator
○Factory method
○Observer
○Strategy
○Template method
●Ко всему прочему можно добавить
○Singleton
○Null-Object