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

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

09.03.2017, 16:09. Показов 4989. Ответов 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
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
15.03.2017, 18:24
oopguru, грань между полной свободой и анархией очень тонка и эфемерна. В этом, на мой взгляд, основная причина непопулярности языков типа Io.
0
Заблокирован
15.03.2017, 23:15  [ТС]
Usaga, вот еще какой вопрос возник.
Вроде, в основном везде где описывается визитор(в статьях), идет фокусировка на типах. Диспетчеризация по типам объектов и прочее. Но ведь Ваш пример не завязан на типах вообще. То есть, получается, что визитор к типам не имеет непосредственного отношения, работа с типами -- лишь частный случай его применения, правильно я понимаю?
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
16.03.2017, 07:16
oopguru, визитёр позволяет сотворить некоторую работу над объектом (или с его участием или даже без оного) основываясь на типе объекта, но без процесса выяснения этого типа. Всё разруливается с помощью диспетчеризации. Такой вот каламбур.

Т.е. производится опрос объектов, а те уже сами заявляют, что и как с ними нужно сделать (вызовом соответствующего метода визитёра). Это такая инверсия классической ситуации, когда внешний алгоритм выполняет действия над объектами коллекции основываясь на каких-то своих познаниях об этих объектах.
1
Заблокирован
16.03.2017, 09:24  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
основываясь на типе объекта
Вы же сами говорили, что визитор ничего не знает о том, кого он посещает, а аксептор ничего не знает о том, какой визитор ему дали. Тут нет никакой зависимости от типов, только от интерфейсов. О каком же тогда "основании на типах" Вы говорите?
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
16.03.2017, 09:34
Цитата Сообщение от oopguru Посмотреть сообщение
О каком же тогда "основании на типах" Вы говорите?
О том, что за интерфейсами сидят объекты конкретных типов, а не бестелесные духи. И вот эти конкретные типы и определяют, какой именно метод визитёра будет вызван. При это, никакой явной привязки к типу или проверки типа не происходит. Всё "само работает".
1
Заблокирован
16.03.2017, 09:41  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
О том, что за интерфейсами сидят объекты конкретных типов, а не бестелесные духи
это к делу не относится. За любым объектом всегда сидит тип, если так рассуждать, то получится что любой код "основывается на типах".
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
16.03.2017, 09:45
Цитата Сообщение от oopguru Посмотреть сообщение
это к делу не относится.
Относится. В зависимости от типа посещаемого объекта будет вызван тот или иной метод. Просто явно это нигде не фигурирует.
0
Заблокирован
16.03.2017, 09:51  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Относится. В зависимости от типа посещаемого объекта будет вызван тот или иной метод. Просто явно это нигде не фигурирует.
не от типа, а от интерфейса
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
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
Ответ Создать тему
Новые блоги и статьи
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru