Описание тега visitor-pattern

Шаблон проектирования посетителя - это способ отделения алгоритма от структуры объекта, на которой он работает. Практический результат этого разделения - возможность добавлять новые операции к существующим структурам объектов без изменения этих структур. Этот тег является синонимом наиболее часто используемого тега [посетитель] - используйте его вместо этого тега.
1 ответ

Шаблон посетителя и свободный синтаксис в стиле LINQ для API обхода дерева

Я подумываю о рефакторинге проекта с открытым исходным кодом Afterthought, чтобы сделать его более интуитивно понятным в использовании. Основная идея заключается в том, что разработчики, создающие поправки в Afterthought, будут вносить изменения в к…
28 май '11 в 14:09
2 ответа

Шаблон дизайна посетителя, Как работать с оператором If-else

Постановка задачи: Существует три типа машин: Machine1 Machine2 и Machine3. Существует три типа валидаторов: ValidatorX, ValidatorY, ValidatorZ. Каждый валидатор проверяет каждую машину по-разному. Напишите классы Java, чтобы проектировать вышеупомя…
12 июл '14 в 07:51
3 ответа

Как преодолеть проблему со стиранием типов для реализации посетителем

Я начинаю работать с Java после некоторых проектов на C# и C++. Я хотел спроектировать интерфейсы посетителей следующим образом: public interface ActionVisitor<A> { void visitAction(A action); } public interface MySmallActionVisitor extends Ac…
29 дек '10 в 06:06
0 ответов

Альтернатива шаблону посетителя

Известная проблема с Visitor Pattern - это то, что он плохо масштабируется с богатой иерархией классов (даже если вы не часто добавляете классы). Когда вы объединяете шаблон посетителя с шаблоном команды, открываются врата ада. Ваш интерфейс посетит…
05 июн '18 в 17:59
1 ответ

Статическая (время компиляции / строго типизированная) поддержка множественной диспетчеризации в C#

Недавно я снова и снова использовал один и тот же шаблон в своем коде. По сути, это вариант шаблона посетителя, который я использую для преобразования ссылок на экземпляры базовых классов в производные. Этот подход требует много стандартного кода. В…
3 ответа

Избегайте использования InstanceOf с шаблоном посетителя - Java

Я искал об этом объекте в Stack Overflow. Я нашел следующее решение: Объяснение шаблона посетителя Теперь мой случай похож на этот. Мне нужно, однако, чтобы избежать использования "instanceOf". У меня есть игра, в которой названы башни MonkeyTower, …
1 ответ

Получить тип шаблона класса в шаблоне посетителя

Я пытаюсь написать систему обмена сообщениями с шаблонами, шаблонами посетителей и с помощью CRTP. Я понимаю эти концепции, но, тем не менее, я нахожусь в ситуации, когда мне нужно вернуть "потерянный" тип. у меня есть Base класс, и я хочу найти Der…
21 апр '17 в 21:59
1 ответ

Нанимайте через разнородный и типобезопасный словарь

Мне нужен контейнер, который работает как Ditionary, но где тип данных (TValue) переход с одного ключа на другой. Я также должен повторить через это.
14 сен '15 в 09:16
3 ответа

Используйте шаблон посетителя, чтобы обработать другое, если

Интересно, есть ли способ справиться с простым условием с помощью шаблона посетителя или нет? Например, если у нас есть приведенный ниже код, как мы можем применить к нему шаблон посетителя? public class Elseif { private int total; public int Condit…
30 янв '13 в 21:17
1 ответ

Как распространять обновления для всех элементов в графе элементов Colectica DDI?

Недавно мне нужно было обновить более ста элементов Concept, используя скрипт, использующий Colectica SDK для DDI, и мне нужно распространять эти обновления по всем местам в наборе с известным корневым элементом Project. Это означает, что каждый эле…
14 окт '13 в 08:36
3 ответа

Головоломка производительности Java: классы-оболочки быстрее, чем примитивные типы?

Чтобы реализовать некоторые алгоритмы анализа изображений, не беспокоясь о типе данных (т. е. не имея слишком много повторяющегося кода), я настраиваю шаблон посетителя для примитивных массивов в Java. В приведенном ниже примере я определил два типа…
2 ответа

Рефакторинг устаревшего экземпляра корпуса коммутатора с помощью шаблонов проектирования

Унаследованный код моей компании страдает от распространенного использования экземпляра кожуха коммутатора в виде: if(object instanceof TypeA) { TypeA typeA = (TypeA) object; ... ... } else if(object instanceof TypeB) { TypeB typeB = (TypeB) object;…
29 мар '18 в 15:51
1 ответ

Вопросы, связанные с внедрением шаблона проектирования посетителей

Исходя из моих текущих требований, я реализовал шаблон Visitor, и у нас есть несколько различных аспектов: 1> В отличие от классического примера, проиллюстрированного в книге GoF, подклассы Equipment не выровнены. Другими словами, все подклассы нахо…
02 авг '12 в 15:50
0 ответов

Есть ли C++/CLI, эквивалентный C# приведению к динамическому типу?

Я расширяю иерархию классов, написанную на C#, которая реализует шаблон Visitor (двойная диспетчеризация) с использованием динамического ключевого слова, как описано здесь. Вот очень упрощенный псевдокод того, что я сейчас делаю в C#: public class C…
2 ответа

C++, избегать RTTI и шаблон посетителя, это возможно?

Я смотрел на некоторые связанные темы, но до сих пор не нашел ничего, что отвечает на следующий вопрос. Допустим, у меня есть иерархия классов (например, виджеты, элемент HTML), которые образуют древовидную структуру. Когда я иду по дереву или ищу к…
14 мар '13 в 09:39
1 ответ

Ищите противоположность SqlGeometryBuilder: Как я могу разложить SqlGeometry?

Я знаю как составить SqlGeometry с помощью SqlGeometryBuilder, например: // using Microsoft.SqlServer.Types; SqlGeometryBuilder geometryBuilder = new SqlGeometryBuilder(); geometryBuilder.SetSrid(…); geometryBuilder.BeginGeometry(OpenGisGeometryType…
3 ответа

Шаблон посетителя

Когда я читаю о шаблоне посетителя, он говорит как Позволяет применять одну или несколько операций к набору объектов во время выполнения, отделяя операции от структуры объекта. Если мое предположение верно, мы определим абстрактного посетителя, кото…
27 май '15 в 15:23
2 ответа

Проблема петли посетителя

Я использую следующий код шаблона посетителя для анализа файла XML: using RimWorld; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Xml; using UnityEngine; using Verse; namespace Co…
14 июл '14 в 02:46
2 ответа

Использование шаблона посетителя с шаблонными производными классами

Я пытаюсь реализовать шаблон Visitor с шаблонными производными классами Я работаю с gcc 4.5 вот VisitorTemplate.hpp, я специализировал Derived в классе Visitor, но я бы хотел иметь возможность обрабатывать любой тип: редактировать: благодаря предлож…
2 ответа

Циклическая зависимость: IVisitor и Datas

Недавно я спросил о циклической зависимости. Ответом было посвятить проект по интерфейсам (MyProject.Abstractions). Теперь этот проект является причиной другой циклической зависимости с шаблоном Visitor. namespace MyProject.Abstractions { public int…