为其它对象提供一种代理以控制对这个对象的访问

接口 共通:
#ifndef SUBJECT_H_
#define SUBJECT_H_
class Subject
{
virtual void request(){};
};
#endif /* SUBJECT_H_ */
RealSubject 真实追求者;
.h:
#ifndef REALSUBJECT_H_
#define REALSUBJECT_H_
#include "Subject.h"
class RealSubject : Subject
{
public:
RealSubject();
~RealSubject();
void request();
};
#endif /* REALSUBJECT_H_ */
.cpp
#include#include "RealSubject.h"
using namespace std;
void RealSubject::request()
{
cout<<"真实的请求"<<endl;
RealSubject::RealSubject()
{
}
RealSubject::~RealSubject()
{
}
proxy 代理 追求者:俗称代理类
.h
#ifndef PROXT_H_
#define PROXT_H_
#include "Subject.h"
#include "Proxt.h"
#include "RealSubject.h"
class Proxy : Subject
{
public:
Proxy();
~Proxy();
RealSubject * reqlSubject;
void request();
};
#endif /* PROXT_H_ */
.cpp
#include#include "Proxt.h"
using namespace std;
Proxy::Proxy()
{
}
Proxy::~Proxy()
{
}
void Proxy::request()
{
reqlSubject = new RealSubject();
reqlSubject->request(); //空指针调用方法会crash
}
int main()
{
Proxy *p = new Proxy();
p->request();
}