Паттерн проектирования — это часто встречающееся решение определённой проблемы при проектировании архитектуры программ. Паттерны часто путают с алгоритмами, ведь оба понятия описывают типовые решения каких-то известных проблем. Если привести аналогии, то алгоритм — это кулинарный рецепт с чёткими шагами, а паттерн — инженерный чертёж, на котором нарисовано решение, но не конкретные шаги его реализации.
беспокоятся о гибком создании объектов без внесения в программу лишних зависимостей.
- Абстрактная фабрика (Abstract Factory) Семейства связанных объектов.
- Строитель (Builder) Cложные объекты пошагово. один код для разных объектов.
- Фабричный метод (Factory Method) Общий интерфейс для подклассов изменет тип объектов.
- Прототип (Prototype) Копируем объекты, не вдаваясь в подробности реализации.
- Одиночка (Singleton) Класс имеет только один экземпляр, и глобальную точку доступа.
- Моностатический синглтон (Borg)
- Ленивая оценка (Lazy evaluation)
- Пул объектов (Object pool)
показывают различные способы построения связей между объектами.
- Адаптер (Adapter) Несовместимые интерфейсы
- Компоновщик (Composite) Древовидная структуруа
- Декоратор/оформитель (Decorator/Wrapper) Функциональность через «обёртки».
- Фасад (Facade) Простой интерфейс к сложной структуре
- Мост (Bridge) Абстракция + Реализация
- Легковес/Приспособленец (Flyweight) Разделяя общее состояние объектов
- Заместитель/прокси/суррогат (Proxy/surrogate) Подставляет объекты-заменители.
- Трехзвенка (Three-Tier/3-tier)
- Единая точка входа (Front controller)
- Модель Отображенин Контроллер(MVC)
заботятся об эффективной коммуникации между объектами.
- Команда/действие (Command/action) Передает запросы в объекты как аргументы.
- Итератор/указатель (Iterator) Последовательный обход элементов составных объектов.
- Наблюдатель/слушатель (Observer/Listener) Один объект следит за другим.
- Стратегия (Strategy) Схожие алгоритмы в класс.
- Посредник (Mediator) Перемещение связей в один класс-посредник.
- Состояние (State) Меняет поведение в зависимости от состояния.
- Шаблонный метод (Template Method) Перекладывает ответственность на подклассы не меняя его общей структуры.
- Цепочка обязанностей (Chain of Responsibility) Запросы по цепочке обработчиков.
- Снимок/Хранитель (Memento) Снимки состояния объектов.
- Классная доска (Blackboard)(доска объявлений)
- Посетитель (Visitor) Новые операции, не меняя классы объектов.
- Одноразовый посетитель (Single-serving visitor)
- Иерархический посетитель (Hierarchical visitor)
- Каталог (Сatalog)
- Цепь методов (Chaining method)
- Издатель-подписчик (Publish subscribe/Pub-sub)
- Спецификация/пределение (Specification)
- Слуга (Servant)
- Подчинение (Subsumption)
- Внедрение зависимости (Dependency injection)
- Отложенная инициализация (Lazy initialization)
- Шаблон делегирования (Delegation pattern)
- Поиск в графе(Graph search)
- Машина состояний (Hierarchical State Machine/HSM)
- Реестр/Журнал записей (Registry)
- Наследование (Inheritance)
- Нейтральный объект (Null)
- Сокрытие (Closure)
- Пул «одиночек» (Multiton)