33 lines
587 B
C++
33 lines
587 B
C++
#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;
|
|
}; |