#pragma once
#include "stdafx.h"
#include<iostream>
#include<windows.h>
using namespace std;
//代理模式 Proxy
class ProxuInterface {
public:
virtual VOID doThings1() = 0;
virtual VOID doThings2() = 0;
};
class DoBody : public ProxuInterface {
public:
virtual VOID doThings1() {
cout << "dothings1" << endl;
}
virtual VOID doThings2() {
cout << "dothings2" << endl;
}
};
class DoProxy :public ProxuInterface {
private:
ProxuInterface *mpDoBody = NULL;
public:
DoProxy(ProxuInterface *pDoBody) {
mpDoBody = pDoBody;
}
~DoProxy() {
delete mpDoBody;
}
virtual VOID doThings1() {
mpDoBody->doThings1();
}
virtual VOID doThings2() {
mpDoBody->doThings2();
}
};
int main()
{
ProxuInterface *pDo = new DoProxy(new DoBody());
pDo->doThings1();
pDo->doThings2();
getchar();
return 0;
}
//tip 其实上面的实现写的不是很好,尤其是在main里调用的时候
//我既然new了 DoBody 如果真是情景是这样岂不是TLKZFP?
//正常情况下,我们客户端只接触代理类DoProxy就好了,说白了
//也就是DoProxy在这里就代替了DoBody,然后我们自己再在
//DoProxy里面好好的使用DoBody