SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
Класс svcs::cli::CommandFactory

Фабрика для создания объектов ICommand по их строковому имени. Подробнее...

#include <CommandFactory.hxx>

Открытые члены

 CommandFactory (std::shared_ptr< ISubject > bus, std::shared_ptr< RepositoryManager > repoManager)
 Конструирует CommandFactory.
 CommandFactory (const CommandFactory &)=delete
 Удаляет конструктор копирования. Фабрика не должна копироваться.
CommandFactoryoperator= (const CommandFactory &)=delete
 Удаляет оператор присваивания. Фабрика не должна присваиваться.
void registerCommand (const std::string &name, std::function< std::unique_ptr< ICommand >(std::shared_ptr< ISubject >, std::shared_ptr< RepositoryManager >)> creator)
 Регистрирует функцию-создатель для новой команды.
std::string getCommandDescription (const std::string &name) const
 Получает краткое описание для зарегистрированной команды.
void showCommandHelp (const std::string &name) const
 Отображает подробную справку и использование для зарегистрированной команды.
std::unique_ptr< ICommandcreateCommand (const std::string &name) const
 Создает и возвращает объект команды по его имени.
std::vector< std::string > getRegisteredCommands () const
 Получает список имен всех текущих зарегистрированных команд.

Подробное описание

Фабрика для создания объектов ICommand по их строковому имени.

CommandFactory управляет жизненным циклом команд, создавая их динамически с использованием функций-создателей, зарегистрированных под уникальными именами. Команды конструируются с общим владением шиной событий (ISubject) и менеджером репозитория (RepositoryManager).

Конструктор(ы)

◆ CommandFactory()

svcs::cli::CommandFactory::CommandFactory ( std::shared_ptr< ISubject > bus,
std::shared_ptr< RepositoryManager > repoManager )
explicit

Конструирует CommandFactory.

Аргументы
busОбщий указатель на шину событий.
repoManagerОбщий указатель на менеджер репозитория.

Методы

◆ createCommand()

std::unique_ptr< ICommand > svcs::cli::CommandFactory::createCommand ( const std::string & name) const

Создает и возвращает объект команды по его имени.

Передает владение (через unique_ptr) созданного объекта вызывающей стороне.

Аргументы
nameИмя команды (ключ в карте creators).
Возвращает
std::unique_ptr<ICommand>, содержащий новый объект команды, или nullptr если команда не зарегистрирована.

◆ getCommandDescription()

std::string svcs::cli::CommandFactory::getCommandDescription ( const std::string & name) const

Получает краткое описание для зарегистрированной команды.

Для этого необходимо создать временный экземпляр команды.

Аргументы
nameИмя команды.
Возвращает
Строка описания команды или сообщение об ошибке, если команда не зарегистрирована.

◆ getRegisteredCommands()

std::vector< std::string > svcs::cli::CommandFactory::getRegisteredCommands ( ) const

Получает список имен всех текущих зарегистрированных команд.

Возвращает
Вектор строк, содержащий имена всех зарегистрированных команд.

◆ registerCommand()

void svcs::cli::CommandFactory::registerCommand ( const std::string & name,
std::function< std::unique_ptr< ICommand >(std::shared_ptr< ISubject >, std::shared_ptr< RepositoryManager >)> creator )

Регистрирует функцию-создатель для новой команды.

Аргументы
nameСтроковое имя, под которым команда будет вызываться.
creatorФункция, которая создает и возвращает новый объект ICommand.

◆ showCommandHelp()

void svcs::cli::CommandFactory::showCommandHelp ( const std::string & name) const

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

Это достигается созданием временного экземпляра команды и вызовом его метода showHelp.

Аргументы
nameИмя команды.

Объявления и описания членов классов находятся в файлах: