C++代理模式:Proxy Pattern

2023-11-16

代理模式:为另一个对象提供一个替身或者占位符以控制对这个对象的访问。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。

代理需要做的:控制和管理访问;需要时可以扩展目标对象的功能;

被代理的对象可以是远程的对象或需要安全控制的对象等。

subject:抽象的主题;

案例:假设你想购买一款华为新出的手机,但是你不知道手机的真假,这时可以通过手机代理来帮你检验手机的真假并帮你购买新出的手机。

抽象的主题(subject):购物

代理:手机代理

realSubject:买家

类图:

实现如下:

shop.h:

#ifndef SHOP_H
#define SHOP_H
#include <iostream>
using namespace std;

class Shop {
public:
    virtual void buy() = 0;
};

#endif // SHOP_H


buyer.h:

#ifndef BUYER_H
#define BUYER_H
#include "shop.h"

class Buyer : public Shop {
public:
    virtual void buy() override
    {
        cout << "用户购买手机" << endl;
    }
};

#endif // BUYER_H


proxy.h:

#ifndef PROXY_H
#define PROXY_H
#include "buyer.h"

class Proxy : public Shop {
public:
    Proxy(Shop* buyer)
    {
        m_buyer = buyer;
    }

    void distinguish()
    {
        cout << "辨别手机为真" << endl;
    }

    virtual void buy() override
    {
        distinguish();
        cout << "代理人帮用户找到手机" << endl;
        m_buyer->buy();
    }

private:
    Shop* m_buyer;
};
#endif // PROXY_H


main.cpp:

/*
 * 代理模式
 *
 * date:2023-9-17
*/

#include "proxy.h"

int main()
{
    Shop* buyer = new Buyer();
    Shop* proxy = new Proxy(buyer);

    proxy->buy();
}

运行截图:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++代理模式:Proxy Pattern 的相关文章

  • 通俗易懂的java设计模式(6)-代理模式

    1 什么是代理模式 为某个对象提供一个代理对象 通过这个代理对象 可以控制对原对象的访问 通俗的解释 我们电脑桌面上的一个个快接方式 当我们点击这个快捷方式的时候 我们就间接地访问到了这个程序 2 静态代理 何为静态 即在程序运行之前 代理
  • 代理模式详解

    第一节 代理模式介绍 1 什么是代理模式 代理 Proxy 是一种设计模式 提供了对目标对象另外的访问方式 即通过代理对象访问目标对象 这样做的好处是 可以在目标对象实现的基础上 增强额外的功能操作 即扩展目标对象的功能 代理模式分为静态代
  • C++解释器模式:Interpreter Pattern

    当有语言要解释时 请使用解释器模式为语言创建解释器 解释器模式的核心是解释器类 在解释器模式中一般会定义两种解释器 终结符解释器 Terminal Expression Interpreter 终结符解释器用于解释语言中的基本单位 对应语法
  • C++状态模式:State Pattern

    状态模式 允许对象在其内部状态改变时改变它的行为 对象看起来好像修改类它的类 状态模式是有限状态机 Finite State Machine 的一种实现方式 我们都知道 http请求报文由请求行 请求头 请求空行和请求体四部分组成 服务器在
  • SpringAOP JDK动态代理

    1 本篇博客的背景和目的 目前我本人正在学习SpringFramework的知识 这也是这个专栏的主题 我前面的几篇博文中 简单的认识了一下SpringFramework 记录了SpringFramework的环境搭建 记录了SpringI
  • 设计模式——代理模式

    代理模式概述 代理模式是Java开发中使用较多的一种设计模式 代理设计就是为其他对象提供一种代理以控制对这个对象的访问 代理类似中介的身份 应用场景 安全代理 屏蔽对真实角色的直接访问 远程代理 通过代理类处理远程方法调用 RMI 延迟加载
  • 设计模式(二)- 代理模式

    代理模式 文章目录 代理模式 1 代理模式 1 1介绍 1 2 应用实例 1 3 静态代理 1 4 动态代理 1 4 1 Java lang reflect Proxy类可以直接生成一个代理对象 1 4 2 InvocationHandle
  • C++装饰者模式:Decorator Pattern

    设计原则 类应该对扩展开发 对修改关闭 装饰者可以在所委托被装饰者的行为之后加上自己的行为 以达到特定的目的 装饰者模式 动态地将责任附加到对象上 若要扩展功能 装饰者提供了比继承更有弹性的替代方案 装饰者和被装饰者必须是一样的类型 也就是
  • java设计模式之代理模式

    什么是代理模式 为什么要使用代理模式 代理模式属于结构型 通过目标对象类完成其实现 静态代理 静态代理要求目标对象和代理对象实现同一个业务接口 由目标类去创建和实现 代理类负责实现增强 静态代理的缺点 代理类和目标类实现了相同的接口 每个代
  • 动态代理步骤

    实现动态代理的步骤 1 创建接口 定义目标类要完成的方法 2 创建目标类实现接口 3 创建InvocationHandler接口的实现了类 在invoke方法中完成代理类的功能 1 调用目标方法 2 增强功能 4 使用Proxy类的静态方法
  • 7.代理模式

    1 UML 2 代码 include
  • Java JDK动态代理

    Java JDK动态代理 一 代理是什么 二 示例 三 总结 一 代理是什么 代理是一种设计模式 被代理对象 真实对象 实现具体的服务方法 委托给代理来进行处理 代理类可以在被代理对象的方法上附加更多的处理 一般有静态代理和动态代理 区别在
  • C++责任链模式:Chain of Responsibility Pattern

    当你想要让一个以上的对象有机会能够处理某个请求的时候 就可以使用责任链模式 责任链模式 将请求的发送和接收解耦 让多个接收对象都有机会处理这个请求 将这些接收对象串成一条链 并沿着这条链传递这个请求 直到链上的某个接收对象能够处理它为止 通
  • 直连模式、PAC模式和全局模式

    直连模式 就是直接连接 没有经过任何协议节点 和没开网络代理模式一样 相当于关闭网络代理 全局模式 意思是访问所有网站都走代理节点 这种模式访问国内网站速度略慢 并且耗费流量 PAC模式 根据pac文件来判断访问时需不需要经过代理 较为智能
  • Java 代理模式之静态代理与动态代理

    1 代理模式 代理模式给某一个对象提供一个代理对象 并由代理对象控制对原对象的引用 通俗的来讲代理模式就是我们生活中常见的中介 代理模式的目的 1 通过引入代理对象的方式来间接访问目标对象 防止直接访问目标对象给系统带来的不必要复杂性 2
  • Java中常见的设计模式

    目录 一 什么是设计模式 二 设计模式的类型 1 创建型模式 2 结构型模式 3 行为型模式 三 单例模式 1 代码示例 2 优点 3 缺点 4 使用场景 四 工厂模式 1 代码示例 2 优点 3 缺点 五 装饰模式 1 代码示例 2 优点
  • Spring框架之AOP详解

    Spring AOP 理论 AOP 灵魂三问 AOP的一些术语概念 Spring AOP 底层实现 五种通知形式 实现 如何写切面类 具体举例 理论 AOP 灵魂三问 1 AOP是什么 AOP中文叫做面向切面编程 为Aspect Orien
  • 如何用CHAT写新能源颗粒报告?

    问CHAT 写一份新能源颗粒报告 CHAT回复 新能源颗粒 也就是生化质能源颗粒 以其清洁 可再生的特性 在环保能源市场上拥有越来越广泛的应用 以下为对于新能源颗粒行业的一份报告 1 行业概述 新能源颗粒来源广泛 主要包括农业废弃物 林业废
  • 用CHAT如何写大学生会计综合模拟实训报告

    CHAT回复 标题 大学生会计综合模拟实训报告 一 前言 随着信息化时代的发展 现代会计工作不再只依赖手动运算和记录 而是更加倚重电脑软件系统的配合运用 因此 对我们大学生来说 把握会计理论知识的同时 积极掌握相关的实践应用技能变得非常重要
  • 让CHAT介绍下V2ray

    CHAT回复 V2Ray是一个网络工具 主要用于科学上网和保护用户的网络安全 它的名字源自Vmess Ray 光线 通过使用新的网络协议 为用户提供稳定且灵活的代理服务 下面是一些V2Ray的主要特性 1 多协议支持 V2Ray 提供了大量

随机推荐