Можно поместить его в два места. Контроллер и на Уровне представления. При наличии части логики на Уровне представления можно ограничить количество запросов назад в архитектуру, которая добавляет загрузку в систему. Да, необходимо кодировать дважды, но иногда это - то, в чем Вы нуждаетесь для быстро реагирующего пользовательского опыта.
я отчасти как то, что было сказано здесь ( http://www.martinhunter.co.nz/articles/MVPC.pdf )
"С MVPC, компонент предъявителя модели MVP разделяется на два компонента: предъявитель (просматривают управляющую логику), и контроллер (абстрактная управляющая логика цели)".
int i;
cout << "Please enter an integer value: ";
// cin >> i; leaves '\n' among possible other junk in the buffer.
// '\n' also happens to be the default delim character for getline() below.
cin >> i;
if (cin.fail())
{
cout << "\ncin failed - substituting: i=1;\n\n";
i = 1;
}
cin.clear(); cin.ignore(INT_MAX,'\n');
cout << "The value you entered is: " << i << " and its double is " << i*2 << ".\n\n";
string myString;
cout << "What's your full name? (spaces inclded) \n";
getline (cin, myString);
cout << "\nHello '" << myString << "'.\n\n\n";