#pragma once #include "common.hpp" class Subject // 主题的抽象基类 { public: Subject(string name) :m_Name(name) {}; string getName(); virtual void request() = 0; private: string m_Name; }; class RealSubject :public Subject // 主体主题类 { public: RealSubject(string name) :Subject(name) {}; void request(); }; class ProxySubject :public Subject // 代理主题类 { public: ProxySubject(string name, RealSubject* subject = nullptr) :Subject(name), m_pSubject(subject) {}; void request(); void preRequest(); void afterRequest(); private: RealSubject* m_pSubject; };