设计模式之代理模式

 

#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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值