В разработке программного обеспечения, шаблон проектирования или паттерн (англ. design pattern) — повторяемая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
Необходимо понимать, что шаблон - это не конкретная реализация в виде кода, а более общая архитектурная идея. Один и тот же шаблон может быть представлен различными вариантами в коде. В целом граница шаблона нечетко определена: иногда сложно понять является ли нечто реализацией конкретного шаблона или нет (Пример: является ли Object#toString() реализацией Factory Method).
На данной странице собран каталог шаблонов GoF. Шаблоны от других авторов Вы можете посмотреть на странице материалов для углубленного изучения.
Необходимо понимать, что шаблон - это не конкретная реализация в виде кода, а более общая архитектурная идея. Один и тот же шаблон может быть представлен различными вариантами в коде. В целом граница шаблона нечетко определена: иногда сложно понять является ли нечто реализацией конкретного шаблона или нет (Пример: является ли Object#toString() реализацией Factory Method).
На данной странице собран каталог шаблонов GoF. Шаблоны от других авторов Вы можете посмотреть на странице материалов для углубленного изучения.
Литература по шаблонам
- "Паттерны проектирования" из серии Head First.
Книга начального уровня, рассчитана на тех, кто еще неуверенно оперирует терминами ООП (делегирование, композиция, наследование, сокрытие, ...).
- "Шаблоны проектирования в JAVA" Марка Гранда.
Книга среднего уровня, рассчитана на тех кто предпочитает конкретику (примеры приводятся на Java, в отличии от GoF). Книга также содержит дополнительно ряд идиом/шаблонов, не входящих в GoF, но популярных в Java (Marker Interface, Immutable, ...) и многопоточных шаблонов (Thread Pool, ...).
- "Приемы объектно-ориентированного проектирования. Паттерны проектирования" (Design Patterns: Elements of Reusable Object-Oriented Software) авторов Гамма, Хелм, Джонсон, Влиссидес (Банда Четырех == Gang of Four == GoF). Оригинальный источник информации по шаблонам. Книга выше среднего уровня, рассчитана на тех кто предпочитает достаточно высокий уровень абстракции и может рассматривать примеры кода на С++. В случае споров - аппелируют к ней. Есть несколько полезных диаграмм/постеров: оригинальный от GoF, постеры от celinio (page0 + page1)
- Дополнительную информацию по шаблонам проектирования Вы можете найти на странице Материалов для углубленного изучения.
Рекомендуемый порядок изучения
1) 13 наиболее популярных шаблонов (Builder, Singleton, Factory Method, Adapter, Decorator, Composite, Facade, Proxy, Command, Iterator, Listener, Strategy, Template Method) по Марку Гранду2) после усвоения - 13 по GoF
3) после усвоения оставшиеся 10 шаблонов по Марку Гранду и дополнительные шаблоны от автора
4) после усвоения - оставшиеся 10 шаблонов и весь текст по GoF.
Подтемы
- creational
- Singleton
- Builder
- Prototype
- Abstract Factory
- Factory Method
- structural
- Adapter
- Decorator
- Bridge
- Composite
- Facade
- Flyweight
- Proxy
- behavioral
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Listener
- State
- Strategy
- Template Method
- Visitor