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 的相关文章

  • C++复合模式:Compound Pattern

    模式通常被一起使用 并被组合在同一个设计解决方案中 复合模式在一个解决方案中结合两个或多个模式 以解决一般或重复发生的问题 注 是为了解决一般或重复发生的问题 而不是简单的认为使用了多个模式就是复合模式 绝不要为了使用模式而使用模式 具体问
  • 代理模式详解

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

    AOP概念 面向切面编程 Aspect Oriented programming 讲很多业务都要使用的功能进行抽取出来单独实现 在运行业务的时候 再动态的植入这些抽取的代码 将共性业务和核心业务分离 例子 1 身份验证 登录 2 权限验证
  • Javascript设计模式-06-代理模式

    Javascript设计模式 06 代理模式 简介 代理模式就是为其他对象提供一种代理 代用品或者占位符 以控制对这个对象的访问 代理对象角色内部含有对真实对象的引用 从而可以操作真实对象 同时代理对象提供与真实对象相同的接口 以便在任何时
  • C++装饰者模式:Decorator Pattern

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

    六 动态代理模式 1 模式结构和结构图 1 抽象主题 Subject 类 通过接口或抽象类声明真实主题和代理对象实现的业务方法 1 2 真实主题 Real Subject 类 实现了抽象主题中的具体业务 是代理对象所代表的真实对象 是最终要
  • 栈实现综合计算器(中缀表达式)

    栈实现综合计算器 中缀表达式 来自专栏 LeetCode基础算法题 欢迎订阅 文章目录 栈实现综合计算器 中缀表达式 1 题目 2 思路 3 代码 4 总结 1 题目 使用栈来实现综合计算器 2 思路 看到计算器我们首先想到的数据结构是栈
  • 爬虫高级应用(15. 基于Charles抓包软件抓取手机APP数据)

    目录 写在前面 配置安装Charles 安装Charles 下载相关证书 电脑证书 手机证书 设置代理 实操案例 抓取手机APP爱吾游戏宝盒数据 写在前面 移动App多使用异步的方式从服务端获取数据 抓取数据之前 要先分析移动App用于获取
  • java 代理(静态代理、动态代理的不同实现)详解及示例

    文章目录 一 代理构成 1 代理介绍 2 应用场景介绍 二 静态代理 1 示例 1 售票服务 2 售票 3 代售点服务 4 静态代理实现 1 maven 依赖 2 实现 三 动态代理 1 InvocationHandler角色 2 Invo
  • GPT带我学-设计模式-代理模式

    什么是代理模式 代理模式 Proxy Pattern 是设计模式中的一种结构型模式 它为其他对象提供一种代理以控制对这个对象的访问 代理模式有三个主要角色 抽象主题 Subject 真实主题 Real Subject 和代理 Proxy 抽
  • C++命令模式:Command Pattern

    把方法调用封装起来 调用此方法的对象不需要关心方法是怎么运行的 还可以重复使用这些封装来实现撤销 undo 案例 设计一个遥控器来控制不同类型的装置 比如热水器 空调 每个装置的具体步骤方法不一样 命令模式可以将 动作的请求者 从 动作的执
  • Java JDK动态代理

    Java JDK动态代理 一 代理是什么 二 示例 三 总结 一 代理是什么 代理是一种设计模式 被代理对象 真实对象 实现具体的服务方法 委托给代理来进行处理 代理类可以在被代理对象的方法上附加更多的处理 一般有静态代理和动态代理 区别在
  • 第二十二章 Spring AOP⾥⾯的代理知识

    1 静态代理和动态代理 什么是代理 为某 个对象创建 个代理对象 程序不直接 原本的对象 是由创建的代理对象来控制对原对象 通过代理类这中间 层 能有效控制对委托类对象的直接访问 也可以很好地隐藏和保护委托类对象 同时也为实施不同控制策略预
  • c++栈详解(附代码)

    1 栈 Stack 是一种线性存储结构 它具有如下特点 1 栈中的数据元素遵守 先进后出 First In Last Out 的原则 简称FILO结构 后进先出的叫法 也是可以的 2 限定只能在栈顶进行插入和删除操作 2 栈的相关概念 1
  • 跟我学Java设计模式第7天:行为型设计模式

    Java设计模式文章目录 跟我学Java设计模式第一天 设计模式概述和软件设计原则 跟我学Java设计模式第二天 简单工厂模式 工厂方法模式 抽象工厂模式 跟我学Java设计模式第三天 代理模式 适配器 装饰者等其中模式结构 跟我学Java
  • C++责任链模式:Chain of Responsibility Pattern

    当你想要让一个以上的对象有机会能够处理某个请求的时候 就可以使用责任链模式 责任链模式 将请求的发送和接收解耦 让多个接收对象都有机会处理这个请求 将这些接收对象串成一条链 并沿着这条链传递这个请求 直到链上的某个接收对象能够处理它为止 通
  • 【githubshare】无需编写一行代码,即可自动为静态数据集生成只读 API,快速完成静态数据的加载调用

    推荐 GitHub 上一款开源的开发者工具 ROAPI 无需编写一行代码 即可自动为静态数据集生成只读 API 快速完成静态数据的加载调用 GitHub github com roapi roapi 静态数据集所支持的格式 包括 CSV J
  • Kotlin采集美团商家信息 同行竞争价格监控

    南方小土豆 挤爆哈尔滨旅游市场 一个冬天让哈尔滨火出了圈 让全国观众看见了不一样的逆向旅游热 虽说我心驰神往 但是无奈加班敲代码 连休息的时间都没有 前段时间我通过用java写了一个美团爬虫程序 今天我 利用java的Kotlin库来写个美
  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • 利用CHAT写实验结论

    问CHAT 通过观察放置在玻璃表面上的单个水滴 人们可以观察到水滴充当成像系统 探究这样一个透镜的放大倍数和分辨率 CHAT回复 实验报告标题 利用玻璃表面的单一水滴观察成像系统的放大倍数和分辨率 一 实验目的 通过对比和测量 研究和探索玻

随机推荐