Введение

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

Применимость

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

Плюсы

Никаких "зомби"-объектов. При использовании единственного обслуживающего посетителя гарантируется выделение посетителей по требованию и их уничтожение после использования. Более простой интерфейс, чем у паттерна "Посетитель". Посетитель создается, используется и освобождается одним вызовом статического метода apply.

Минусы

Повторное выделение памяти. При каждом вызове метода `apply to` создается и затем уничтожается экземпляр посетителя, что требует значительных затрат времени. В отличие от этого, синглтон выполняет выделение памяти только один раз.