SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
CompositeCommandFactory.hxx
См. документацию.
1
19#pragma once
20
24
25#include <memory>
26#include <vector>
27#include <functional>
28#include <string>
29#include <unordered_set>
30
46 * сервисными слоями для обеспечения единого пользовательского опыта приложения.
47 */
48namespace svcs::integration {
49
50using namespace svcs::core;
51using namespace svcs::cli;
52using namespace svcs::services;
53
72public:
84 CompositeCommandFactory(std::shared_ptr<ISubject> event_bus,
85 std::shared_ptr<RepositoryManager> repo_manager);
86
94 ~CompositeCommandFactory() = default;
95
104
113
127 void registerFactory(std::function<std::unique_ptr<ICommand>(const std::string&)> factory);
128
144 std::unique_ptr<ICommand> createCommand(const std::string& name) const;
145
159 std::vector<std::string> getAllCommandNames() const;
160
176 std::string getCommandDescription(const std::string& name) const;
177
191 void showCommandHelp(const std::string& name) const;
192
206 bool commandExists(const std::string& name) const;
207
217 size_t getFactoryCount() const;
218
219private:
227 std::shared_ptr<ISubject> event_bus_;
228
236 std::shared_ptr<RepositoryManager> repo_manager_;
237
247 std::vector<std::function<std::unique_ptr<ICommand>(const std::string&)>> factories_;
248};
249
250}
Объявление интерфейса ICommand для всех исполняемых CLI команд.
Определяет интерфейс для компонента Subject (Издатель) шаблона Observer.
Declaration of the RepositoryManager class, managing all repository-level file operations.
void registerFactory(std::function< std::unique_ptr< ICommand >(const std::string &)> factory)
Регистрирует фабричную функцию для создания команд.
Определения CompositeCommandFactory.cxx:41
CompositeCommandFactory & operator=(const CompositeCommandFactory &)=delete
Удаленный оператор присваивания.
size_t getFactoryCount() const
Получает количество зарегистрированных фабрик.
Определения CompositeCommandFactory.cxx:110
bool commandExists(const std::string &name) const
Проверяет, существует ли команда с заданным именем.
Определения CompositeCommandFactory.cxx:106
~CompositeCommandFactory()=default
Деструктор по умолчанию.
void showCommandHelp(const std::string &name) const
Отображает подробную справку для команды.
Определения CompositeCommandFactory.cxx:96
std::vector< std::string > getAllCommandNames() const
Получает имена всех доступных команд из всех фабрик.
Определения CompositeCommandFactory.cxx:55
std::unique_ptr< ICommand > createCommand(const std::string &name) const
Создает команду по имени с использованием зарегистрированных фабрик.
Определения CompositeCommandFactory.cxx:45
std::string getCommandDescription(const std::string &name) const
Получает описание для команды.
Определения CompositeCommandFactory.cxx:88
CompositeCommandFactory(std::shared_ptr< ISubject > event_bus, std::shared_ptr< RepositoryManager > repo_manager)
Конструирует CompositeCommandFactory с необходимыми зависимостями.
Определения CompositeCommandFactory.cxx:25
Компоненты командной строки и реализации команд.
Основные структуры данных СКВ и модель объектов.
Компоненты интеграции системы и сквозные задачи.
Компоненты сервисного слоя и инфраструктурные сервисы.