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

Интеграционный компонент для объединения нескольких фабрик команд. Подробнее...

#include <CompositeCommandFactory.hxx>

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

 CompositeCommandFactory (std::shared_ptr< ISubject > event_bus, std::shared_ptr< RepositoryManager > repo_manager)
 Конструирует CompositeCommandFactory с необходимыми зависимостями.
 ~CompositeCommandFactory ()=default
 Деструктор по умолчанию.
 CompositeCommandFactory (const CompositeCommandFactory &)=delete
 Удаленный конструктор копирования.
CompositeCommandFactoryoperator= (const CompositeCommandFactory &)=delete
 Удаленный оператор присваивания.
void registerFactory (std::function< std::unique_ptr< ICommand >(const std::string &)> factory)
 Регистрирует фабричную функцию для создания команд.
std::unique_ptr< ICommandcreateCommand (const std::string &name) const
 Создает команду по имени с использованием зарегистрированных фабрик.
std::vector< std::string > getAllCommandNames () const
 Получает имена всех доступных команд из всех фабрик.
std::string getCommandDescription (const std::string &name) const
 Получает описание для команды.
void showCommandHelp (const std::string &name) const
 Отображает подробную справку для команды.
bool commandExists (const std::string &name) const
 Проверяет, существует ли команда с заданным именем.
size_t getFactoryCount () const
 Получает количество зарегистрированных фабрик.

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

Интеграционный компонент для объединения нескольких фабрик команд.

Служит мостом между различными подсистемами команд (CLI, Server). При создании команды пробует каждую зарегистрированную фабрику по порядку, пока одна из них не создаст команду успешно. Такая архитектура позволяет чисто разделить ответственность, предоставляя единый интерфейс команд приложению.

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

◆ CompositeCommandFactory()

svcs::integration::CompositeCommandFactory::CompositeCommandFactory ( std::shared_ptr< ISubject > event_bus,
std::shared_ptr< RepositoryManager > repo_manager )

Конструирует CompositeCommandFactory с необходимыми зависимостями.

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

Методы

◆ commandExists()

bool svcs::integration::CompositeCommandFactory::commandExists ( const std::string & name) const

Проверяет, существует ли команда с заданным именем.

Аргументы
nameИмя команды для проверки.
Возвращает
True если любая зарегистрированная фабрика может создать команду, false в противном случае.

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

◆ createCommand()

std::unique_ptr< ICommand > svcs::integration::CompositeCommandFactory::createCommand ( const std::string & name) const

Создает команду по имени с использованием зарегистрированных фабрик.

Аргументы
nameИмя команды для создания.
Возвращает
Уникальный указатель на созданную команду, или nullptr если ни одна фабрика не может ее создать.

Пробует каждую зарегистрированную фабрику по порядку, пока одна не создаст команду успешно. Возвращает первую найденную команду (не null).

◆ getAllCommandNames()

std::vector< std::string > svcs::integration::CompositeCommandFactory::getAllCommandNames ( ) const

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

Возвращает
Вектор всех имен команд, которые могут быть созданы любой зарегистрированной фабрикой.

Собирает имена команд из всех зарегистрированных фабрик, удаляя дубликаты. Команды возвращаются в порядке регистрации (порядок фабрик), не в алфавитном порядке.

◆ getCommandDescription()

std::string svcs::integration::CompositeCommandFactory::getCommandDescription ( const std::string & name) const

Получает описание для команды.

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

Создает временный экземпляр команды для получения ее описания. Если команда не может быть создана, возвращает соответствующее сообщение об ошибке.

◆ getFactoryCount()

size_t svcs::integration::CompositeCommandFactory::getFactoryCount ( ) const

Получает количество зарегистрированных фабрик.

Возвращает
Количество фабричных функций, зарегистрированных в данный момент.

◆ registerFactory()

void svcs::integration::CompositeCommandFactory::registerFactory ( std::function< std::unique_ptr< ICommand >(const std::string &)> factory)

Регистрирует фабричную функцию для создания команд.

Аргументы
factoryФабричная функция, которая принимает имя команды и возвращает указатель на команду.

Фабрики вызываются в порядке их регистрации до тех пор, пока одна не вернет команду (не null). Это позволяет приоритизировать определенные типы команд над другими.

◆ showCommandHelp()

void svcs::integration::CompositeCommandFactory::showCommandHelp ( const std::string & name) const

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

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

Создает временный экземпляр команды и вызывает его метод showHelp. Если команда не может быть создана, показывает сообщение об ошибке.


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