Ответ: подобие консоли
Ну со словарём - всё от части верно.
Это тупо key(string)<>value(class) словарь, который будет указывать на класс который будет иметь свой метод парсинга параметров.
Подумай о том как это реализовать чтобы оно удобно масштабировалось.
Я бы сделал интерфейс который нужно наследовать классом для каждой команды, в данном интерфейсе будут требоваться методы:
Help(Console)
Parse(Console, String)
Метод Help нужен для того чтобы например распарсить такую строку:
instance ?
Твой консоль будет всегда знать, что после команды если идёт вопросительный знак - значит это запрос help'а по команде. Твой консоль найдёт по словарю экземпляр класса команды, и вызовет Help, который уже сам сделает что надо - например выведет текст в консоль с инфой по команде.
А при например такой строке:
intance 100
У тебя идёт всегда разбивание строки по пробелу, и первый в списке - будет команда, находишь экземпляр класса команды, и далее шлёшь всю строку исключая команду, в данном случае "100". В методе Parse уже сам реализуешь как и что делать с этой строкой. Ну и выводишь там результат если нужно обратно в консоль.
Таким образом у тебя будет класс консоли, словарь команд, интерфейс для каждой команды, и возможность создавать классы команд наследуя интерфейс.
Получается весьма масштабируемая система для консоли. Хранить классы команд, можно в разных файлах, например в файле для пользователей команды для работы с пользователями, и т.п.
Это добавляет модульности.
|