所谓Proxy模式就是某行为应该是由某特定的类对象来执行,但是因为某种原因,交给另一个实体类来执行,该实体类则为类对象的代理,Proxy模式实现了逻辑和实现的彻底解
耦,其实想想,这和Bridge模式,应该是类似但不相同的,Bridge模式实现了功能和实现的解耦,Bridge模式是在函数功能的粒子度上进行解耦的,但是Proxy则是在对象的粒度上
进行解耦的,但是仔细想想,好像这俩是完全一样的,因为Proxy记录了特定类对象的指针,在Proxy的Request函数体重使用的是特定类对象的方法,只是在Proxy中进行了一次绕
过,而Bridge模式则不一样了,他真正的函数执行体是在传入的类对象中的:
#include
using namespace std;
class Subject
{
public:
Subject();
protected:
~Subject()
{;}
public:
virtual void Request()=0;
};
class ConcreteSubject
{
public:
ConcreteSubject()
{;}
~ConcreteSubject()
{;}
void Request()
{
cout<<"ConcreteSubject::Request\n";
}
};
class Proxy:public Subject
{
private:
Subject* m_sub;
public:
Proxy(Subject* sub)
{
m_sub=sub;
}
~Proxy()
{
delete m_sub;
}
void Request()
{
m_sub->Request();
}
};
int main()
{
Subject* he=new ConcreteSubject();
Subject *tmp=new Proxy(he);
tmp->Request();
delete tmp;
}