【设计模式】代理模式

代理模式

代理模式指代理控制对其他对象的访问,也就是代理对象控制对原对象的引用。在某些情况下,一个对象不适合或者不能直接被引用访问,而代理对象可以在客户端和目标对象之间起到中介的作用。

代理模式的结构包括一个是真正的你要访问的对象(目标类)、一个是代理对象。目标对象与代理对象实现同一个接出口,先访问代理类再通过代理类访问目标对象。代理式分为静态代理、动态代理:

·静态代理指的是,在编译时就已经确定好了代理类和被代理类的关系。也就是说,在编译时就已经确定了代理类要代理的是哪个被代理类。

动态代理指的是,在运行时才动态生成代理类,并将其与被代理类绑定。这意味着,在运行时才能确定代理类要代理的是哪个被代理类。

以租房为例,租客租房,中间经过房屋中介向房东租房。通过代理模式实现:

租房类 实现租房函数实现(纯虚函数)
房东类 重写租房函数实现(将房子租出去)
中介类 重写租房函数实现(代理房东租房,以及其他房屋维修等工作)

静态代理版:

c 复制代码
#include<iostream>
using namespace std;
class Renthome{

public:
  void virtual renthome()=0;//实现纯虚函数是因为,如果子类继承不重写虚函数的话,是不能定义子类对象的

};

class landlord:public Renthome
{

public:
  void virtual renthome()
  {

   cout<<"我要出租房"<<endl;

  }

};


class mediator:public Renthome
{
 

public:
  void virtual renthome()
  {
   _landlorder.renthome();
   cout<<"我要维修房"<<endl;
   cout<<"我要带人看房"<<endl;
   

  }


private:

landlord _landlorder;//中介代理


};

int main()
{

mediator    _mediator;
 _mediator.renthome();

}
相关推荐
海特伟业3 小时前
隧道调频广播覆盖-隧道调频广播无线覆盖系统建设要点、难点分析与解决应对
运维·设计模式
sg_knight3 小时前
设计模式实战:享元模式(Flyweight)
python·设计模式·享元模式·flyweight
Swift社区6 小时前
AI 时代,ArkUI 的设计模式会改变吗?
人工智能·设计模式
数据中穿行6 小时前
访问者设计模式全方位深度解析
设计模式
宁雨桥7 小时前
前端设计模式面试题大全
前端·设计模式
数据中穿行8 小时前
迭代器设计模式全方位深度解析
设计模式
数据中穿行8 小时前
观察者设计模式全方位深度解析
设计模式
程序员Terry8 小时前
别老写重复代码了!模版方法模式一次讲透
java·设计模式
数据中穿行8 小时前
建造者模式全方位深度解析
设计模式
数据中穿行8 小时前
组合设计模式全方位深度解析
设计模式