Основные типы шаблонов проектирования
Основные шаблоны (Fundamental)
- Delegation pattern/Шаблон делегирования
- Functional design/Шаблон функционального дизайна
- Immutable/Неизменяемый объект
- Interface
- Marker interface
- Property Container
Порождающие шаблоны проектирования (Creational)
- Abstract Factory/Абстрактная фабрика — класс, который представляет собой интерфейс для создания компонентов системы.
- Builder/Строитель — класс, который представляет собой интерфейс для создания сложного объекта.
- Factory Method/Фабричный метод — определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанциировать.
- Lazy initialization/Отложенная инициализация — объект, инициализируемый во время первого обращения к нему.
- Multiton
- Object Pool/Объектный пул — класс, который представляет собой интерфейс для работы с набором инициализированных и готовых к использованию объектов.
- Prototype/Прототип — определяет интерфейс создания объекта через клонирование другого объекта вместо создания через конструктор.
- Resource acquisition is initialization (RAII)/Получение ресурса есть инициализация — получение некоторого ресурса совмещается с инициализацией, а освобождение — с уничтожением объекта.
- Singleton/Одиночка — класс, который может иметь только один экземпляр.
Структурные шаблоны (Structural)
Структурные шаблоны определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
- Adapter/Адаптер или Wrapper/Обёртка — объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другой предоставляет несовместимый с первым интерфейс.
- Bridge/Мост — структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо.
- Composite/Компоновщик — объект, который объединяет в себе объекты, подобные ему самому.
- Decorator/Декоратор — класс, расширяющий функционал другого класса, без использования наследования.
- Facade/Фасад — объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое.
- Flyweight/Приспособленец — это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.
- Proxy/Заместитель — объект, который является посредником между двумя другими объектами, и который реализовывает/ограничивает доступ к объекту, к которому обращаются через него.
Поведенческие шаблоны (Behavioral)
- Chain of Responsibility/Цепочка ответственности
- Command/Команда, Action, Transaction
- Interpreter/Интерпретатор
- Iterator/Итератор, Cursor
- Mediator/Посредник
- Memento/Хранитель, Token
- Observer/Наблюдатель, Dependents, Publish-Subscribe, Listener
- State/Состояние, Objects for States
- Strategy/Стратегия
- Template Method/Шаблонный метод
- Visitor/Посетитель
- Simple Policy
- Specification
- Event listener
- Single-serving visitor
- Hierarchical visitor
Шаблоны параллельного программирования (Concurrency)
Шаблоны параллельного программирования используется для более эффективного написания многопоточных программ, и предоставляет готовые решения проблем синхронизации.
- Active Object
- Balking
- Double checked locking/Блокировка с двойной проверкой
- Guarded suspension
- Half-Sync/Half-Async
- Leaders/followers
- Monitor Object
- Reactor
- Read write lock
- Scheduler/Планировщик
- Thread pool
- Thread-Specific Storage
- Single Thread Execution/Однопоточное выполнение
MVC
- Model-View-Controller (MVC) Модель-представление-контроллер
- Model-View-Presenter
- Model-View-View Model
- Presentation-Abstraction-Control
Enterprise
- Business Delegate
- Composite Entity/Составная Сущность
- Composite View
- DAO (Data Access Object) Объект Доступа к Данным
- Dispatcher View
- Front Controller
- Intercepting Filter
- Service Activator
- Service Locator/Локатор Службы
- Service to Worker
- Session Facade/Фасад Сессии
- Transfer Object Assembler
- Transfer Object/Объект Перемещения
- Value List Handler/Обработчик Списка Значений
- View Helper
Unsorted
Другие типы шаблонов
Также на сегодняшний день существует ряд других шаблонов:
- Carrier Rider Mapper, предоставление доступа к хранимой информации
- аналитические шаблоны, описывают основной подход для составления требований для программного обеспечения (requirement analysis) до начала самого процесса программной разработки
- коммуникационные шаблоны, описывают процесс общения между отдельными участниками/сотрудниками организации
- организационные шаблоны, описывают организационную иерархию предприятия/фирмы
- Анти-паттерны (Anti-Design-Patterns) описывают как не следует поступать при разработке программ, показывая характерные ошибки в дизайне и в реализации.