Хорошая причина использовать шаблон проектирования Visitor?

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

Я понимаю, как все работает. Классический пример животное, собака, кошка всегда работает как шарм.

Дело в том, что этот код

int main()
{
    Cat c;
    Sound theSound;
    c.letsDo(&theSound);
}

кажется мне таким неестественным. Почему?

То есть, да, так у меня модели Dog и Cat недифференцированные (впервые я использую это слово на английском, кстати), потому что реальная реализация скрыта под классом Sound, но не Разве это не способ утяжелить ваш код? Разве полиморфизма недостаточно, чтобы сделать что-то вроде этого?

Для меня разница в том, что с полиморфизмом вам нужно редактировать каждый класс (но модель остается той же, верно?), Тогда как вам нужно только отредактировать один класс с посетителем шаблон дизайна.

5
задан Community 23 May 2017 в 12:33
поделиться