Найти в Дзене
using Dev

Посетитель C#

Паттерн "Посетитель" позволяет добавлять новые операции к объектам без изменения их классов. Это достигается за счет введения посредника (посетителя), который выполняет операции над объектами. Вместо того чтобы вызывать методы у объекта напрямую, мы передаем ему посетителя, который может быть специализирован для выполнения определенных действий. Этот паттерн особенно полезен, когда у вас есть множество классов, которые должны реагировать одинаково на некоторые действия, но при этом имеют разные внутренние структуры и поведение. Вместо того чтобы модифицировать каждый класс отдельно, вы можете определить посетителя, который будет обрабатывать эти действия. Паттерн "Посетитель" используется в следующих случаях: Рассмотрим применение паттерна на примере посещение отдыхающим различных мест в городе. Создадим интерфейс посетителя. Создадим интерфейс абстрактного представления места. Реализуем классы конкретных мест для посещения. Создадим класс конкретного посетителя.
Посмотрим применение.
Оглавление

Паттерн "Посетитель" позволяет добавлять новые операции к объектам без изменения их классов. Это достигается за счет введения посредника (посетителя), который выполняет операции над объектами. Вместо того чтобы вызывать методы у объекта напрямую, мы передаем ему посетителя, который может быть специализирован для выполнения определенных действий.

Этот паттерн особенно полезен, когда у вас есть множество классов, которые должны реагировать одинаково на некоторые действия, но при этом имеют разные внутренние структуры и поведение. Вместо того чтобы модифицировать каждый класс отдельно, вы можете определить посетителя, который будет обрабатывать эти действия.

Применение в общем виде

Паттерн "Посетитель" используется в следующих случаях:

  • Когда вам нужно добавить новое поведение к существующему набору классов.
  • Когда у вас есть множество классов с похожими интерфейсами, но различными внутренними реализациями.
  • Когда вы хотите избежать большого количества условных операторов внутри ваших классов.

Пример

Рассмотрим применение паттерна на примере посещение отдыхающим различных мест в городе.

Создадим интерфейс посетителя.

-2

Создадим интерфейс абстрактного представления места.

-3

Реализуем классы конкретных мест для посещения.

-4

Создадим класс конкретного посетителя.

-5

Посмотрим применение.

-6

Результат

-7

Наука
7 млн интересуются