13.代理模式(增加一层代理层)
动机
在面向对象系统中,有些对象由于某种原因(如对象创建开销很大,或者某些操作需要安全控制,或需要进程外的访问等),直接访问会给使用者、或系统结构带来很多麻烦。
如何在不失去透明操作对象的同时管理/控制这些对象特有的复杂性?增加一层间接层是软件开发中常见的解决方式。
模式定义:
为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。
结构:

总结
不直接使用,增加一层代理;分布式大量使用代理模式

例子:
class ISubject{
public:
virtual void process();
};
class RealSubject: public ISubject{
public:
virtual void process(){ .... }
};
class ClientApp{
ISubject* sub;
public:
ClientApp(){ sub = new RealSubject(); }
void DoTask(){
//...
sub->process();
//....
}
};
改进:
class ISubject{
public:
virtual void process();
};
//Proxy的设计
class SubjectProxy: public ISubject{
public:
virtual void process(){
//对RealSubject的一种间接访问
//....
}
};
class ClientApp{
ISubject* sub;
public:
ClientApp(){ sub = new SubjectProxy(); }
void DoTask(){
//...
sub->process();
//....
}
};



浙公网安备 33010602011771号