Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
Заблокирован

Зачем нужен паттерн визитор?

09.03.2017, 16:09. Показов 5111. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выражение типа
Code
1
foo.bar(baz)
мы можем трактовать как то, что bar посещает foo. Зачем поверх этого еще что-то лепить?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2017, 16:09
Ответы с готовыми решениями:

Нужен ли паттерн состояние?
прочитал вот тут: http://cpp-reference.ru/patterns/behavioral-patterns/state/ Ну, а если язык на самом деле может менять класс,...

Зачем нужен стек?
На первый взгляд такая структура кажется немного неудобной. Объясните преимущества, пожалуйста.

Паттерн "Стратегия". Зачем нужен контекст
Здравствуйте, у меня вопрос про паттерн "Стратегия". Я понимаю что он используется для инкапсулирования алгоритмов. Выбирая нужный нам...

50
Заблокирован
15.03.2017, 18:19  [ТС]
Студворк — интернет-сервис помощи студентам
Usaga, я рассматриваю вопрос мощности языка, а не вопросы популярности и применимости в энтерпрайзе. В энтерпрайзе Iо не взлетит просто потому, что массы его не смогут осилить.

Добавлено через 9 минут
Цитата Сообщение от oopguru Посмотреть сообщение
что массы его не смогут осилить.
Да и вообще, там эффективней всего показывают себя подоходы Bondage & Discipline, потому что зависимость от свободолюбивых талантливых,оригинальных программистов бизнесу не нужна. Как правило, языки, дающие свободу не взлетают или быстро дохнут. В зивых остались только JS(стечение обстоятельств) и руби.
0
Эксперт .NET
 Аватар для Usaga
14750 / 9525 / 1364
Регистрация: 21.01.2016
Сообщений: 35,940
15.03.2017, 18:24
oopguru, грань между полной свободой и анархией очень тонка и эфемерна. В этом, на мой взгляд, основная причина непопулярности языков типа Io.
0
Заблокирован
15.03.2017, 23:15  [ТС]
Usaga, вот еще какой вопрос возник.
Вроде, в основном везде где описывается визитор(в статьях), идет фокусировка на типах. Диспетчеризация по типам объектов и прочее. Но ведь Ваш пример не завязан на типах вообще. То есть, получается, что визитор к типам не имеет непосредственного отношения, работа с типами -- лишь частный случай его применения, правильно я понимаю?
0
Эксперт .NET
 Аватар для Usaga
14750 / 9525 / 1364
Регистрация: 21.01.2016
Сообщений: 35,940
16.03.2017, 07:16
oopguru, визитёр позволяет сотворить некоторую работу над объектом (или с его участием или даже без оного) основываясь на типе объекта, но без процесса выяснения этого типа. Всё разруливается с помощью диспетчеризации. Такой вот каламбур.

Т.е. производится опрос объектов, а те уже сами заявляют, что и как с ними нужно сделать (вызовом соответствующего метода визитёра). Это такая инверсия классической ситуации, когда внешний алгоритм выполняет действия над объектами коллекции основываясь на каких-то своих познаниях об этих объектах.
1
Заблокирован
16.03.2017, 09:24  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
основываясь на типе объекта
Вы же сами говорили, что визитор ничего не знает о том, кого он посещает, а аксептор ничего не знает о том, какой визитор ему дали. Тут нет никакой зависимости от типов, только от интерфейсов. О каком же тогда "основании на типах" Вы говорите?
0
Эксперт .NET
 Аватар для Usaga
14750 / 9525 / 1364
Регистрация: 21.01.2016
Сообщений: 35,940
16.03.2017, 09:34
Цитата Сообщение от oopguru Посмотреть сообщение
О каком же тогда "основании на типах" Вы говорите?
О том, что за интерфейсами сидят объекты конкретных типов, а не бестелесные духи. И вот эти конкретные типы и определяют, какой именно метод визитёра будет вызван. При это, никакой явной привязки к типу или проверки типа не происходит. Всё "само работает".
1
Заблокирован
16.03.2017, 09:41  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
О том, что за интерфейсами сидят объекты конкретных типов, а не бестелесные духи
это к делу не относится. За любым объектом всегда сидит тип, если так рассуждать, то получится что любой код "основывается на типах".
0
Эксперт .NET
 Аватар для Usaga
14750 / 9525 / 1364
Регистрация: 21.01.2016
Сообщений: 35,940
16.03.2017, 09:45
Цитата Сообщение от oopguru Посмотреть сообщение
это к делу не относится.
Относится. В зависимости от типа посещаемого объекта будет вызван тот или иной метод. Просто явно это нигде не фигурирует.
0
Заблокирован
16.03.2017, 09:51  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Относится. В зависимости от типа посещаемого объекта будет вызван тот или иной метод. Просто явно это нигде не фигурирует.
не от типа, а от интерфейса
0
Эксперт .NET
 Аватар для Usaga
14750 / 9525 / 1364
Регистрация: 21.01.2016
Сообщений: 35,940
16.03.2017, 09:56
oopguru, интерфейс выступает "разделителем" и контрактом. Он поведение не определяет.

Добавлено через 26 секунд
Но в любом случае, я думаю идея данного паттерна более-менее ясна стала?
1
Заблокирован
16.03.2017, 10:02  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Но в любом случае, я думаю идея данного паттерна более-менее ясна стала?
Да, спасибо большое за объяснение. Прояснилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.03.2017, 10:02

Паттерн Утка или стратегия зачем вообще паттерны?
Начал ознакамливаться с ООП паттернами программирования, все, конечно, красиво, но разрастается все до кучи классов, файлов и тд. Конкретно...

Проблему поймал, нужен грамотный паттерн.
Пишу форум. Ну, естественно, хотелось бы разрешить пользунам вставлять гиперссылки что-нибудь типа www.address.ru или www.address.ru. ...

Зачем он нужен?
Зачем нужен git bush если есть Github Desktop? Т.е. в декстопе можно делать все тоже самое только интерактивно

Зачем нужен using?
Пожалуйста подскажите зачем использовать слово using?например пот здесь: using (var reader = new StreamReader(filename))

Зачем нужен Qt
Привет всем. Такой собственно вопрос. Зачем нужен Qt и есть ли смысл его изучать? C++ знаю на более менее среднем уровне, WinAPI тоже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru