Паттерн Хранитель (Memento) позволяет выносить внутреннее состояние объекта за его пределы для последующего возможного восстановления объекта без нарушения принципа инкапсуляции. Когда использовать Memento? Когда нужно сохранить состояние объекта для возможного последующего восстановления Когда сохранение состояния должно проходить без нарушения принципа…
Посредник (Mediator)
Паттерн Посредник (Mediator) представляет такой шаблон проектирования, который обеспечивает взаимодействие множества объектов без необходимости ссылаться друг на друга. Тем самым достигается слабосвязанность взаимодействующих объектов. Когда используется паттерн Посредник? Когда имеется множество взаимосвязаных объектов, связи между которыми сложны и запутаны. Когда…
Интерпретатор (Interpreter)
Паттерн Интерпретатор (Interpreter) определяет представление грамматики для заданного языка и интерпретатор предложений этого языка. Как правило, данный шаблон проектирования применяется для часто повторяющихся операций. Хотя паттерн требует понимания теории формальных языков и грамматик, на самом деле он не так сложен…
Цепочка Обязанностей (Chain of responsibility)
Цепочка Обязанностей (Chain of responsibility) — поведенческий шаблон проектирования, который позволяет избежать жесткой привязки отправителя запроса к получателю. Все возможные обработчики запроса образуют цепочку, а сам запрос перемещается по этой цепочке. Каждый объект в этой цепочке при получении запроса выбирает,…
Состояние (State)
Общая инфа Состояние (State) — шаблон проектирования, который позволяет объекту изменять свое поведение в зависимости от внутреннего состояния. Когда применяется данный паттерн? Когда поведение объекта должно зависеть от его состояния и может изменяться динамически во время выполнения Когда в коде…
Итератор (Iterator)
Паттерн Итератор (Iterator) предоставляет абстрактный интерфейс для последовательного доступа ко всем элементам составного объекта без раскрытия его внутренней структуры. Наверное, всем программистам, работающим с языком C#, приходилось иметь дело с циклом foreach, который перебирает объекты в массиве или коллекции. При этом…
Шаблонный метод (Template Method)
Шаблонный метод (Template Method) определяет общий алгоритм поведения подклассов, позволяя им переопределить отдельные шаги этого алгоритма без изменения его структуры. Когда использовать шаблонный метод? Когда планируется, что в будущем подклассы должны будут переопределять различные этапы алгоритма без изменения его структуры…
Команда (Command)
Общая инфа Паттерн «Команда» (Command) позволяет инкапсулировать запрос на выполнение определенного действия в виде отдельного объекта. Этот объект запроса на действие и называется командой. При этом объекты, инициирующие запросы на выполнение действия, отделяются от объектов, которые выполняют это действие. Команды…
Наблюдатель (Observer)
Паттерн «Наблюдатель» (Observer) представляет поведенческий шаблон проектирования, который использует отношение «один ко многим». В этом отношении есть один наблюдаемый объект и множество наблюдателей. И при изменении наблюдаемого объекта автоматически происходит оповещение всех наблюдателей. Данный паттерн еще называют Publisher-Subscriber (издатель-подписчик), поскольку…
Стратегия (Strategy)
Паттерн Стратегия (Strategy) представляет шаблон проектирования, который определяет набор алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость. В зависимости от ситуации мы можем легко заменить один используемый алгоритм другим. При этом замена алгоритма происходит независимо от объекта, который использует…