Я реализую шаблон проектирования команд, но моя команда должна запрашивать у пользователя имя файла. Я не уверен, как можно запросить его?Конструкция шаблона команды и взаимодействие с пользователем
Банда из четырех книг, похоже, затрагивает эту проблему, но я не совсем понятна. Ниже мой код (псевдокод должен быть правильным и написан на лету).
class OpenDocumentCommand : public Command
{
virtual char * AskUserForFileName();
virtual void Execute();
Application _App;
}
void OpenDocumentCommand::Execute()
{
char * fileName = AskUserForFileName();
_App.OpenDocument(fileName);
}
Сейчас в типичном простом примере, AskUserForFileName()
может быть cin
и cout
, но как он может запросить имя файла в соответствующем приложении Windows? Он должен открыть File Explorer, и пользователь может выбрать имя файла?
Означает ли это, что это должно быть тесно соединено с окнами? Мой план состоит в том, чтобы использовать этот код как для Windows, так и для iOS, поэтому я хотел бы иметь развязанное решение.
Просто спросите имя файла в отдельном окне перед, и передать его в команде в качестве параметра. –
@ πάνταῥεῖ Но это будет означать, что средняя половина команды выполняется вне команды. Одна из целей команды - пакет и выполнить команду позже. – zar
_'to package'_ что это значит? Команды IMHO должны быть настроены со всеми параметрами, которые им нужно выполнить, без дальнейшего взаимодействия. –