SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
ISubject.hxx
См. документацию.
1
19#pragma once
20
21#include "IObserver.hxx"
22#include <memory>
23#include <vector>
24
25
35 * @namespace svcs::services
36 * @brief Компоненты сервисного слоя и инфраструктурные сервисы.
37 * @details Содержит основные инфраструктурные сервисы, включая систему событий,
38 * механизм уведомлений, реализацию шаблона Observer и другие сквозные задачи,
39 * которые поддерживают операции СКВ.
40 */
41namespace svcs::services {
42
58class ISubject {
59protected:
67 std::vector<IObserver*> observers;
69public:
70
79 virtual ~ISubject() = default;
80
90 virtual void attach(std::shared_ptr<IObserver> observer) = 0;
91
101 virtual void detach(std::shared_ptr<IObserver> observer) = 0;
102
118 virtual void notify(const Event& event) const = 0;
119};
120
121}
Определяет интерфейс для компонента шаблона Observer.
Интерфейс Subject (Издатель) (Абстрактный Базовый Класс).
Определения ISubject.hxx:35
virtual void detach(std::shared_ptr< IObserver > observer)=0
Открепляет наблюдателя от субъекта.
virtual ~ISubject()=default
Виртуальный деструктор.
std::vector< IObserver * > observers
Коллекция зарегистрированных наблюдателей.
Определения ISubject.hxx:40
virtual void notify(const Event &event) const =0
Уведомляет всех прикрепленных наблюдателей о событии.
virtual void attach(std::shared_ptr< IObserver > observer)=0
Прикрепляет наблюдателя к субъекту.
Компоненты сервисного слоя и инфраструктурные сервисы.
Структура, описывающая событие, опубликованное ядром VCS.
Определения Event.hxx:27