1.使用场景:有些对象由于某些原因,直接访问会给使用者、或者系统结构带来很多麻烦
2.定义:为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问
3.步骤:增加一层间接层
4.应用:copy-on-write技术
原代码:
class ISubject{
public:
virtual void process();
};
class RealSubject: public ISubject{
public:
virtual void process(){
//....
}
};
class ClientApp{
ISubject* subject;
public:
ClientApp(){
subject=new RealSubject();
}
void DoTask(){
//...
subject->process();
//....
}
};
使用proxy设计模式的代码:
class ISubject{
public:
virtual void process();
};
//Proxy的设计
class SubjectProxy: public ISubject{
public:
virtual void process(){
//对RealSubject的一种间接访问
//....
}
};
class ClientApp{
ISubject* subject;
public:
ClientApp(){
subject=new SubjectProxy();
}
void DoTask(){
//...
subject->process();
//....
}
};