设计模式例程
This commit is contained in:
33
inc/proxy.hpp
Normal file
33
inc/proxy.hpp
Normal file
@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
#include "common.hpp"
|
||||
|
||||
class Subject // <20><><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
public:
|
||||
Subject(string name) :m_Name(name) {};
|
||||
string getName();
|
||||
virtual void request() = 0;
|
||||
|
||||
private:
|
||||
string m_Name;
|
||||
};
|
||||
|
||||
class RealSubject :public Subject // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
public:
|
||||
RealSubject(string name) :Subject(name) {};
|
||||
void request();
|
||||
|
||||
};
|
||||
|
||||
class ProxySubject :public Subject // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
public:
|
||||
ProxySubject(string name, RealSubject* subject = nullptr) :Subject(name), m_pSubject(subject) {};
|
||||
void request();
|
||||
void preRequest();
|
||||
void afterRequest();
|
||||
|
||||
private:
|
||||
RealSubject* m_pSubject;
|
||||
};
|
Reference in New Issue
Block a user