用dw做网站 的过程,wordpress 406,网页设计素材图片怎么获取,劳务公司网站建设1、代理模式的提出
在组件的开发过程中#xff0c;有些对象由于某种原因#xff08;比如对象创建的开销很大#xff0c;或者对象的一些操作需要做安全控制#xff0c;或者需要进程外的访问等#xff09;#xff0c;会使Client使用者在操作这类对象时可能会存在问题…1、代理模式的提出
在组件的开发过程中有些对象由于某种原因比如对象创建的开销很大或者对象的一些操作需要做安全控制或者需要进程外的访问等会使Client使用者在操作这类对象时可能会存在问题1使用者直接访问这种对象会使系统带来很多麻烦。2或者使用者使不能直接访问这类对象使用代理模式就可以解决此类问题。代理模式是在实际操作类和Client使用者之间增加一个代理类实际操作类的一些操作比如对象创建、接口访问、安全控制等相关操作都可以在增加的代理类里面添加相关的功能代码。这样Client实际上是通过代理类来访问和操作实际类。
2、需求描述
有一个主题类该类具有请求功能和数据转换功能。而Client使用者不能直接访问和操作它只能间接的通过其它类进行访问操作。
3、代理模式的代码实现
1代码UML图如下 2代码实现如下
#include iostreamclass AbsSubject
{
public:virtual void request()0;virtual void dataTransfer()0;virtual ~AbsSubject(){};
};class RealSubject:public AbsSubject
{
public:virtual void request() override{std::cout RealSubject request std::endl;};virtual void dataTransfer() override{std::cout RealSubject dataTransfer std::endl;}
};class Proxy:public AbsSubject
{
private:RealSubject* realSubject{nullptr};
public:Proxy(){realSubject new RealSubject();};virtual void request() override{if(nullptr realSubject){return;}std::cout Proxy request std::endl;realSubject-request();};virtual void dataTransfer()override{if(nullptr realSubject){return;}std::cout Proxy dataTransfer std::endl;realSubject-dataTransfer();};virtual ~Proxy(){std::cout ~Proxy std::endl;if(nullptr ! realSubject){delete realSubject;realSubject nullptr;}}
};class Client
{
public:void DoWork(){//创建代理对象Proxy proxy;//通过代理对象来访问实际对象的接口proxy.request();proxy.dataTransfer();}
};int main()
{Client obj;obj.DoWork();return 0;
}运行结果如下 4、代理模式缺点
系统中类数量增加由于增加代理类访问实际类的速度会在某种程度上降低。增加系统复杂度。 5、代理模式优点
可以访问不能访问的对象降低系统直接的耦合度便于功能扩展。
关于代理模式的介绍也可参考
设计模式之代理模式(C实现)_墨1024的博客-CSDN博客