Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
В компьютерном программировании шаблон "одноразовый посетитель" — это шаблон проектирования. Его цель — оптимизировать реализацию посетителя, который выделяется, используется только один раз и затем удаляется (что характерно для большинства посетителей).
In computer programming, the single serving visitor pattern is a design pattern. Its intent is to optimise the implementation of a visitor that is allocated, used only once, and then deleted (which is the case of most visitors).
Применимость
Модель посетителя с однократным использованием следует применять, когда посетителям не требуется оставаться в памяти. Это часто встречается при обходе иерархии объектов (например, при совместном использовании шаблона посетителя и композитного шаблона) для выполнения единственной задачи, например, подсчета количества камер в 3D-сцене. Стандартный шаблон посетителя следует использовать, когда посетитель должен оставаться в памяти. Это происходит, когда посетитель конфигурируется с набором параметров, которые необходимо сохранить в памяти для последующего использования (например, для хранения параметров рендеринга 3D-рендерера). Однако, если во всей программе должен быть только один экземпляр такого посетителя, может быть целесообразно реализовать его как посетителя с однократным использованием, так и как синглтон. Это гарантирует, что посетитель с однократным использованием можно будет вызвать позже с неизменными параметрами (в данном конкретном случае термин "посетитель с однократным использованием" является некорректным, поскольку посетитель может быть использован несколько раз).
The single serving visitor pattern should be used when visitors do not need to remain in memory. This is often the case when visiting a hierarchy of objects (such as when the visitor pattern is used together with the composite pattern) to perform a single task on it, for example counting the number of cameras in a 3D scene. The regular visitor pattern should be used when the visitor must remain in memory. This occurs when the visitor is configured with a number of parameters that must be kept in memory for a later use of the visitor (for example, for storing the rendering options of a 3D scene renderer). However, if there should be only one instance of such a visitor in a whole program, it can be a good idea to implement it both as a single serving visitor and as a singleton. In doing so, it is ensured that the single serving visitor can be called later with its parameters unchanged (in this particular case "single serving visitor" is an abuse of language since the visitor can be used several times).
Плюсы
Никаких "зомби"-объектов. При использовании единственного обслуживающего посетителя гарантируется выделение посетителей по требованию и их уничтожение после использования. Более простой интерфейс, чем у паттерна "Посетитель". Посетитель создается, используется и освобождается одним вызовом статического метода apply.
No "zombie" objects. With a single serving visitor, it is ensured that visitors are allocated when needed and destroyed once useless. A simpler interface than visitor. The visitor is created, used and free by the sole call of the apply to static method.
Минусы
Повторное выделение памяти. При каждом вызове метода `apply to` создается и затем уничтожается экземпляр посетителя, что требует значительных затрат времени. В отличие от этого, синглтон выполняет выделение памяти только один раз.
Repeated allocation. At each call of the apply to method, a single serving visitor is created then discarded, which is time consuming. In contrast, the singleton only performs one allocation.