Created
April 2, 2021 12:01
-
-
Save qxornet/f538a688027cecb79c644e9bf37b36f6 to your computer and use it in GitHub Desktop.
Пример-демонстрация интерфейсов
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ifndef INTERFACE_H | |
#define INTERFACE_H | |
#include "code/includes/includes.h" | |
/** | |
* @brief The Subcommand abstract class | |
* Абстрактный класс реализующий паттерн Фабрика (Factory) | |
* содержит три виртуальных метода: | |
* 1 - установка и получение имени суб-кмоаннды, | |
* 2 - рабочий метод (механику работы команды) | |
* Является продуктом | |
*/ | |
class SubCommand | |
{ | |
public: | |
virtual ~SubCommand() {}; | |
virtual void set(std::string_view name) abstract; | |
virtual std::string get() abstract; | |
virtual void exec() abstract; | |
}; | |
/** | |
* @brief The Command class | |
* Абстрактный класс реализующий паттерн Фабрика (Factory) | |
* содержит три виртуальных метода: | |
* 1 - установка и получение имени команды | |
* 2 - добавление суб-команды | |
* Предназначен для создания суб-команд и является продуктом | |
*/ | |
class Command | |
{ | |
public: | |
virtual ~Command() {}; | |
virtual void set(std::string_view name) abstract; | |
virtual std::string get() abstract; | |
virtual void addSub(SubCommand* subcom) abstract; | |
}; | |
/** | |
* @brief The CommandsFactory class | |
* Абстрактный класс-фабрика создающий конкретные команды | |
* и выводящий | |
* конкретные команды же создают конкретные суб-команды | |
*/ | |
class CommandsFactory | |
{ | |
public: | |
virtual ~CommandsFactory() {}; | |
virtual Command* createCommand() abstract; | |
virtual std::list<Command*> createCommands() abstract; | |
}; | |
#endif // INTERFACE_H |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment