#include <iostream.h>
//此练习是对代理模式的理解
//对同一个对象C存在两个个体,其中个体A希望操作或拥有这个对象C
//但这个对象C与个体A的关联性低,这时个体A知道个体B的存在,同时
//个体B与这个对象C的关联性高,最佳的代理方式个体B应该是个体A的一部分
//注:对象C同个体A的关联性意思很多比如,对象C是个大容量的文本,A只是先
//创建B再由B开线程去打开这个文本对象又或者作为信息传递比如WEB中的应用
//个体A和个体B拥有共同的操作目的,即操作对象C-----为抽象操作接口
class Operation //操作抽象接口类
{
public:
Operation(){}
virtual ~Operation(){}
public:
virtual void OpenFile() = 0 ;
};
class ObjC
{
public:
ObjC(){}
virtual ~ObjC(){}
public:
void Display()
{
cout << "A通过B操作了我" << endl;
}
};
class ObjB : public Operation //代理器
{
private:
ObjC *obj; //B可以操作C
public:
ObjB(){}
virtual ~ObjB(){}
public:
void SetObjC()
{
this ->obj = new ObjC;
}
void OpenFile()
{
this ->obj ->Display();
}
};
class ObjA : public Operation //真正执行者
{
private:
ObjB *ope; //A知道B的存在
public:
ObjA(){}
virtual ~ObjA(){}
public:
void SetObjB()
{
this ->ope = new ObjB;
}
void OpenFile()
{
SetObjB();
this ->ope ->SetObjC();
this ->ope ->OpenFile();
}
};
void main()
{
ObjA *a = new ObjA();
a->OpenFile();
}