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

Интерфейс Subject (Издатель) (Абстрактный Базовый Класс). Подробнее...

#include <ISubject.hxx>

Граф наследования:svcs::services::ISubject:
svcs::core::Repository svcs::services::EventBus svcs::test::cli::mocks::MockSubject svcs::test::core::MockSubject svcs::test::core::MockSubject svcs::test::core::mocks::MockSubject svcs::test::server::MockEventBus svcs::test::server::SimpleEventBus svcs::test::server::SimpleEventBus svcs::test::server::TestEventBus svcs::test::server::ssh::MockEventBus

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

virtual ~ISubject ()=default
 Виртуальный деструктор.
virtual void attach (std::shared_ptr< IObserver > observer)=0
 Прикрепляет наблюдателя к субъекту.
virtual void detach (std::shared_ptr< IObserver > observer)=0
 Открепляет наблюдателя от субъекта.
virtual void notify (const Event &event) const =0
 Уведомляет всех прикрепленных наблюдателей о событии.

Защищенные данные

std::vector< IObserver * > observers
 Коллекция зарегистрированных наблюдателей.

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

Интерфейс Subject (Издатель) (Абстрактный Базовый Класс).

Основные классы (например, Repository, EventBus) реализуют этот интерфейс, чтобы позволить наблюдателям подписываться на события. Контракт требует, чтобы все функции управления (attach, detach) обрабатывали std::shared_ptr<IObserver>.

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

◆ ~ISubject()

virtual svcs::services::ISubject::~ISubject ( )
virtualdefault

Виртуальный деструктор.

Обеспечивает корректную очистку производных классов субъектов.

Методы

◆ attach()

virtual void svcs::services::ISubject::attach ( std::shared_ptr< IObserver > observer)
pure virtual

Прикрепляет наблюдателя к субъекту.

Аргументы
observerУмный указатель на объект наблюдателя для прикрепления.

Замещается в svcs::core::Repository, svcs::services::EventBus, svcs::test::cli::mocks::MockSubject, svcs::test::cli::utils::MockSubject, svcs::test::core::MockSubject, svcs::test::core::MockSubject, svcs::test::server::MockEventBus, svcs::test::server::SimpleEventBus, svcs::test::server::SimpleEventBus и svcs::test::server::TestEventBus.

◆ detach()

virtual void svcs::services::ISubject::detach ( std::shared_ptr< IObserver > observer)
pure virtual

Открепляет наблюдателя от субъекта.

Аргументы
observerУмный указатель на объект наблюдателя для открепления.

Замещается в svcs::core::Repository, svcs::services::EventBus, svcs::test::cli::mocks::MockSubject, svcs::test::cli::utils::MockSubject, svcs::test::core::MockSubject, svcs::test::core::MockSubject, svcs::test::server::MockEventBus, svcs::test::server::SimpleEventBus, svcs::test::server::SimpleEventBus и svcs::test::server::TestEventBus.

◆ notify()

virtual void svcs::services::ISubject::notify ( const Event & event) const
pure virtual

Уведомляет всех прикрепленных наблюдателей о событии.

Этот метод сделан публичным, чтобы классы компонентов (как ObjectStorage) могли публиковать события через внедренный указатель ISubject. Метод объявлен как const, потому что уведомление о событии является логически неизменяющим действием над состоянием Subject.

Аргументы
eventКонстантная ссылка на структуру события для отправки.

Замещается в svcs::core::Repository, svcs::services::EventBus, svcs::test::cli::mocks::MockSubject, svcs::test::cli::utils::MockSubject, svcs::test::core::mocks::MockSubject, svcs::test::core::MockSubject, svcs::test::core::MockSubject, svcs::test::server::MockEventBus, svcs::test::server::SimpleEventBus, svcs::test::server::SimpleEventBus, svcs::test::server::ssh::MockEventBus и svcs::test::server::TestEventBus.


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