Files
design-pattern/inc/proxy.hpp
2025-06-02 13:57:29 +08:00

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;
};