Please enable JavaScript.
Coggle requires JavaScript to display documents.
Паттерны (Поведения (Стратегия (Когда есть несколько родственных классов,…
Паттерны
Поведения
Стратегия
Когда есть несколько родственных классов, которые отличаются поведением. Можно задать один основной класс, а разные варианты поведения вынести в отдельные классы и при необходимости их применять
Когда необходимо обеспечить выбор из нескольких вариантов алгоритмов, которые можно легко менять в зависимости от условий
-
Когда класс, применяющий определенную функциональность, ничего не должен знать о ее реализации
Шаблонный метод
Когда планируется, что в будущем подклассы должны будут переопределять различные этапы алгоритма без изменения его структуры
Когда в классах, реализующим схожий алгоритм, происходит дублирование кода. Вынесение общего кода в шаблонный метод уменьшит его дублирование в подклассах.
Посредник
Когда имеется множество взаимосвязаных объектов, связи между которыми сложны и запутаны.
Когда необходимо повторно использовать объект, однако повторное использование затруднено в силу сильных связей с другими объектами.
-
Итератор
-
Когда имеется набор составных объектов, и надо обеспечить единый интерфейс для их перебора
-
-
Наблюдатель
-
Когда система состоит из множества классов, объекты которых должны находиться в согласованных состояниях
Когда общая схема взаимодействия объектов предполагает две стороны: одна рассылает сообщения и является главным, другая получает сообщения и реагирует на них. Отделение логики обеих сторон позволяет их рассматривать независимо и использовать отдельно друга от друга.
Когда существует один объект, рассылающий сообщения, и множество подписчиков, которые получают сообщения. При этом точное число подписчиков заранее неизвестно и процессе работы программы может изменяться.
Команда
-
Когда необходимо обеспечить выполнение очереди запросов, а также их возможную отмену.
Когда надо поддерживать логгирование изменений в результате запросов. Использование логов может помочь восстановить состояние системы - для этого необходимо будет использовать последовательность запротоколированных команд.
Когда надо передавать в качестве параметров определенные действия, вызываемые в ответ на другие действия. То есть когда необходимы функции обратного действия в ответ на определенные действия.
Состояние
-
Когда поведение объекта должно зависеть от его состояния и может изменяться динамически во время выполнения
Когда в коде методов объекта используются многочисленные условные конструкции, выбор которых зависит от текущего состояния объекта
Цепочка обязанности
Когда имеется более одного объекта, который может обработать определенный запрос
Когда надо передать запрос на выполнение одному из нескольких объект, точно не определяя, какому именно объекту
-
-
-
-
Посетитель
Когда имеется много объектов разнородных классов с разными интерфейсами, и требуется выполнить ряд операций над каждым из этих объектов
-
Когда часто добавляются новые операции к классам, при этом общая структура классов стабильна и практически не изменяется
-
Порождающие патерны
Фабричный метод
Когда заранее неизвестно, объекты каких типов необходимо создавать
Когда система должна быть независимой от процесса создания новых объектов и расширяемой: в нее можно легко вводить новые классы, объекты которых система должна создавать.
-
-
-
Одиночка
Когда необходимо, чтобы для класса существовал только один экземпляр
Прототип
-
Когда нежелательно создание отдельной иерархии классов фабрик для создания объектов-продуктов из параллельной иерархии классов (как это делается, например, при использовании паттерна Абстрактная фабрика)
Когда клонирование объекта является более предпочтительным вариантом нежели его создание и инициализация с помощью конструктора. Особенно когда известно, что объект может принимать небольшое ограниченное число возможных состояний.
-
Структурные паттерны
Задачи
Паттерн определяет иерархию классов, которые одновременно могут состоять из примитивных и сложных объектов, упрощает архитектуру клиента, делает процесс добавления новых видов объекта более простым.
-
-
-
-