当前位置:首页 > CN2资讯 > 正文内容

代理模式代理商盈利模式

1天前CN2资讯


一、作用

代理模式,也称为委托模式,作用就是找一个对象来替我们访问某个对象;
意图:为其它对象提供一种代理以控制对这个对象的访问;

代理模式就像我们生活中有些不方便自己直接出面处理的事情,然后找一个中间人替我们去处理;

例如:我们来到一个新的城市,需要租房,但是你又不知道哪里有好的房源,所以你找到了中介,去帮你找好的房源;
那么你就是下图中的RealSubject,中介就是Proxy,Request()就是租房


二、UML类图

  • Subject:抽象主题角色,定义Proxy和RealSubject的共用接口,这样就可以在任何使用RealSubject的地方,都可以使用Proxy;
  • RealSubject:具体主题角色,被代理角色,真实处理业务的角色,是业务逻辑的具体执行者;
  • Proxy:代理主题角色,代理角色,保存一个引用使得代理可以访问实体;

三、代码实现

#include <iostream> #include <string> using namespace std; //Subject class Subject { public: virtual void Request() = 0; }; //RealSubject class RealSubject :public Subject { public: void Request() { cout << "小明需要租一间房子!" << endl; } }; //Proxy class Proxy :public Subject { public: Proxy (Subject* subject) :m_subject(subject){} void Request() { m_Person->Request(); cout << "中介抽取佣金百分之10!" << endl; } private: Subject* m_subject; }; //场景 int main() { //小明 Subject *xiaoM = new RealSubject; //找一个中介帮忙租房子 Subject *intermediary = new Proxy(xiaoM); intermediary->Request(); return 0; } 结果: 小明需要租一间房子! 中介抽取佣金百分之10! 请按任意键继续. . .

四、优缺点

优点

  • 职责清晰。代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度;
  • 高扩展性。可以灵活隐藏被代理对象的部分功能和服务,更可灵活增加额外的功能和服务。

缺点

  • 由于客户端与真实主题间增加了代理对象,故有些类型的代理模式可能导致请求处理的速度变慢;
  • 实现代理模式需要额外的工作,有些代理模式实现起来比较复杂。

五、适用场景

根据目的和实现方式的不同,代理模式可分为很多种,常见的有:

  • 远程代理(Remote Proxy)
    为一个位于不同地址空间的对象提供一个本地代理,对代理的方法调用会导致对远程对象的方法调用。ATM 就是一个例子,ATM 可能会持有(存在于远程服务器中的)银行信息的一个代理对象。
  • 虚拟代理(Virtual Proxy)
    使用虚拟代理,代理可以作为一个(资源消耗较大的)对象的代表。虚拟代理经常延迟对象的创建,直到需要为止。在创建对象之前(及创建对象过程中),虚拟代理也可以作为对象的代理;之后,代理将请求直接委托给 RealSubject。
  • 保护代理(Protection Proxy)
    根据访问权限,可以使用保护代理来控制对资源的访问。例如,有一个员工对象,保护代理可以允许普通员工调用对象的某些方法,管理员调用其他方法。
  • 缓冲代理(Cache Proxy)
    为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。
  • 智能引用代理(Smart Reference Proxy)
    当一个对象被引用时,提供一些额外的操作(例如:将对象被调用的次数记录下来)。


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32072.html

    分享给朋友:

    “代理模式代理商盈利模式” 的相关文章

    选择合适的服务器购买攻略:性能、预算与品牌分析

    在购买服务器之前,进行充分的准备至关重要。首先,我喜欢明确自己购买服务器的目的。是否只是用来搭建网站,还是用于复杂的数据处理,抑或是作为云计算的基础设施?这些需求会直接影响我的选择。明确目标后,我可以更好地针对我的具体需求进行规划。 接着,我必须考虑预算。无论是想购买入门级的服务器,还是高性能的旗舰...

    如何在VPS上启用和配置IPv6以提升网络性能

    在当今数字化的时代,互联网已经成为我们日常生活中不可或缺的一部分。随着设备和用户数量的快速增长,现有的IPv4地址开始捉襟见肘。这时,IPv6(Internet Protocol Version 6)应运而生,作为下一代互联网协议,它的出现可以说是一种必然趋势。IPv6不仅解决了IPv4地址耗尽的问...

    选择合适的Linux SSH工具来提升远程管理效率

    在数字化时代,远程连接与管理变得尤为重要。SSH(Secure Shell)是一种网络协议,用于通过不安全的网络安全地访问计算机。SSH技术保障了数据的隐私和完整性,并通过加密通道进行通信。当我第一次接触SSH时,它对于在不同计算机之间安全地进行操作以及文件传输是多么重要,印象深刻。 SSH不仅仅是...

    使用getenforce命令管理SELinux执行模式的技巧与经验

    getenforce的基本概念 当我开始接触Linux系统的时候,SELinux这个名字总是让我感到神秘。经过逐渐的探索,我了解到SELinux(Security-Enhanced Linux)是一个强大的安全模块,它为Linux系统提供了细致的访问控制。这时候,getenforce命令便进入了我的...

    如何在宝塔面板上安装和配置Node.js的详细指南

    宝塔面板是一个非常便捷的服务器管理工具,专为简化网站管理而设计。无论是网站的搭建,还是后期的维护,宝塔面板都能够提供一系列友好的功能和工具,使得用户即使没有专业的技术背景,也能轻松上手。它允许用户通过Web界面对服务器进行管理,安装软件和配置环境,简直就是一个“傻瓜式”的的操作平台。 谈到宝塔面板,...

    选择日本软银VPS的理由与性价比分析

    在当今数字化的时代,虚拟专用服务器(VPS)成为了越来越多企业和个人选择的重要基础设施。简单来说,VPS是将一台物理服务器虚拟化成多个相互独立的虚拟服务器。每个服务器都可以独立运行自己的操作系统,具备自己的资源和配置。这种灵活性和可靠性使得VPS成为解决高流量、高并发需求的理想选择。 在众多VPS提...