7.代理模式

2023-11-11

1.UML

在这里插入图片描述
2.代码

#include <iostream>
using namespace std;
 
class Subject{
public:
    virtual void Request() = 0;
};
 
class RealSubject:public Subject
{
public:
    virtual void Request(){
        cout << "RealSubject" << endl;
    }
};
class Proxy:public Subject
{
public:
    RealSubject *real = nullptr;
    virtual void Request(){
        if(real == nullptr){
            real = new RealSubject();
        }
        real->Request();
    }
};
 
class Client{
public:
    void dothing(Subject *object){
        object->Request();
    }
};
 
int main()
{
    Client *c = new Client();
    Proxy *p = new Proxy();
    c->dothing(p);
    cout << "--endl--" << endl;
    return 0;
}

运行结果:

RealSubject
--endl--

练习:追求者

UML图

在这里插入图片描述

#include <iostream>
using namespace std;
 
class Songliwu{
public:
    virtual void song_wawa() = 0;
    virtual void song_huahua() = 0;
    virtual void song_qiaokeli() = 0;
};
class MM{
public:
    string name;
    MM(string _name):name(_name){
 
    }
};
 
class Persuit:public Songliwu
{
public:
    MM *mm;
    Persuit(MM *_mm):mm(_mm){
 
    }
    void song_wawa(){
        cout << mm->name <<":送娃娃" << endl;
    }
    void song_huahua(){
        cout << mm->name <<":送花花" << endl;
    }
    void song_qiaokeli(){
        cout << mm->name <<":送巧克力" << endl;
    }
};
class Proxy:public Songliwu
{
public:
    Persuit *gg;
    Proxy(MM *mm){
        gg = new Persuit(mm);
    }
    void song_wawa(){
        gg->song_wawa();
    }
    void song_huahua(){
        (*gg).song_huahua();
    }
    void song_qiaokeli(){
        (*gg).song_qiaokeli();
    }
};
 
int main(void)
{
    MM *mm = new MM("韩梅梅");
    Proxy p(mm);
    p.song_wawa();
    p.song_huahua();
    p.song_qiaokeli();
    cout << "--endl--" << endl;
    return 0;
}

运行结果:

韩梅梅:送娃娃
韩梅梅:送花花
韩梅梅:送巧克力
--endl--

参考:https://lkmao.blog.csdn.net/article/details/128950278?ydreferer=aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1ZW5pX3poYW8vY2F0ZWdvcnlfMTIxNDI1MDUuaHRtbA%3D%3D

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

7.代理模式 的相关文章

  • 离散仿真引擎基础作业与练习

    作业内容 一 简答题 1 解释 GameObjects 和 Assets 的区别与联系 2 下载几个游戏案例 分别总结资源 对象组织的结构 3 使用 debug 验证 MonoBehaviour 基本行为或事件触发条件 4 了解 GameO
  • 面向过程和面向对象的语言有哪些,以及优缺点(一篇文章让你理解)

    C语言是面向过程的 而C python java是面向对象的 面向过程的编程思想将一个功能分解为一 个一个小的步骤 我们通过完成一个一 个的小的步骤来完成一个程序 优点 这种编程方式 符合我们人类的思维 编写起来相对比较简单 缺点 但是这种
  • 设计模式——导论

    作为软件开发人员 我们在平时工作的过程中 往往需要编写很多的代码来实现我们的需求 很多的时候会造成代码臃肿和代码冗余的情况 这个时候我们需要引入一个理念 设计模式 设计模式存在的意义在于 1 使得我们的代码更加精炼 2 使我们代码的可读性更
  • 设计模式学习之装饰器模式

    装饰器 Decorator 模式跟适配器 Adapter 模式一样 属于构建型设计模式 在学习适配器模式的时候说过 适配器模式的重点在复用能力 装饰器模式的重点在扩展能力 换言之 装饰器模式是先复用后扩展 这也导致了很多人跟适配器模式混淆
  • 设计模式-2--工厂模式(Factory Pattern)

    一 什么是工厂模式 工厂模式 Factory Pattern 是一种创建型设计模式 它提供了一种创建对象的接口 但是将对象的实例化过程推迟到子类中 工厂模式允许通过调用一个共同的接口方法来创建不同类型的对象 而无需暴露对象的实例化逻辑 工厂
  • 分享几个项目中用到的设计模式

    前言 之前项目中出于扩展性和有雅性的考虑 使用了多种设计模式进行项目框架的设计 主要的一些设计模式是单例模式 工厂模式 策略模式 责任链模式 代理模式这几种 现在依次讲讲这几个的主要是实现方式和在我们项目中的应用场景 核心设计模式分享 单例
  • linux内核中的设计模式

    创建型 Object Pool Object Pool模式可以提升性能 尤其是在对象的分配 初始化成本高 使用频率高 但使用时间短的情况下 对象池可以设置对象池的大小和回收时间缓存预分配的对象 NT和Linux都有简单的预分配缓存对象的机制
  • 设计模式学习笔记-工厂模式

    设计模式学习笔记 工厂模式 作用 实现了创建者和调用者的分离 详细分类 简单工厂模式 用来生产同一等级结构中的任意产品 对于增加新的产品 必须要扩展已有的代码 工厂方法模式 用来生产同一等级结构中的固定产品 支持增加任意产品 抽象工厂模式
  • java-IO流(5)-IO流中的设计模式(装饰器模式和适配器模式)的介绍

    目录 1装饰器模式 1 1定义 1 2代码实现 1 3装饰器特点 1 4装饰器在IO流中的使用 2配适器模式 2 1Adapter适配器 2 2代码实例 2 3适配器特点 2 4适配器优缺点 2 5适配器在IO中的使用 3装饰器与适配器异同
  • 设计模式——State(状态)模式

    目录 前言 1 定义 2 适用性 3 结构 3 1 结构图 3 2 参与者 4 应用举例 4 1 State TcpState 4 2 Context TcpConnection 4 3 ConcreteState ListeningTcp
  • DDD专家张逸:构建领域驱动设计知识体系

    张逸 读完需要 5分钟 速读仅需 2 分钟 领域驱动设计专家 曾就职于 ThoughtWorks 作为 Lead Consultant 为客户提供架构设计 大数据分析 持续交付 代码质量 敏捷管理等咨询服务 著译作包括 软件设计精要与模式
  • JavaScript设计模式-02-单例模式

    Javascript 设计模式 02 单例模式 简介 单例就是保证一个类只有一个实例 实现的方法一般是先判断实例是否存在 如果存在直接返回 如果不存在就创建了再返回 确保了一个类只有一个实例对象 在JavaScript里 单例作为一个命名空
  • 设计模式(不懂)

    面试中经常问到设计模式 我才对这个东西了解了一下 才发现他是没有开发的新大陆 是oo设计的更高级别 能把设计模式搞懂 那oo你就搞的差不多了 随便看了还是很有意思的 虽然不怎么懂 百科名片 相关书籍 设计模式 Design pattern
  • 设计模式详解---策略模式

    1 策略模式简介 策略模式 Strategy Pattern 是一种行为型设计模式 用于在运行时根据不同的情境选择不同的算法或策略 该模式将算法封装成独立的类 使得它们可以相互替换 而且可以独立于客户端使用它们的方式 1 1 主要角色 上下
  • 设计模式—迭代器模式解析

    本文参考学习了 图解设计模式 中的代码实现和原理解释 迭代器模式 简介 Iterator 模式用于在数据集合中按照顺序遍历集合 就类似于我们的循环 一个个去遍历一个集合中的所有元素 示例代码 首先我们思考一个书本和书架的关系 显然 书架可以
  • 设计模式(3)--对象结构(5)--外观

    1 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口 这个接口使得 这一子系统更加容易使用 2 两种角色 子系统 Subsystem 外观 Facade 3 优点 3 1 对客户屏蔽了子系统组件 减少了客户处
  • C++设计模式 #3策略模式(Strategy Method)

    动机 在软件构建过程中 某些对象使用的的算法可能多种多样 经常改变 如果将这些算法都写在类中 会使得类变得异常复杂 而且有时候支持不频繁使用的算法也是性能负担 如何在运行时根据需求透明地更改对象的算法 将算法和对象本身解耦 从而避免上述问题
  • 自动化测试面试题(附答案)

    1 自动化代码中 用到了哪些设计模式 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2 什么是断言 Assert 断言Assert用于在代码中验证实际结果是不是符合预期结果 如果测试用例执行失败会抛出异常并提供断
  • 【设计模式之美】面向对象分析方法论与实现(二):需求到接口实现的方法论

    文章目录 一 进行面向对象设计 1 划分职责 gt 需要有哪些类 2 定义类及其属性和方法 3 定义类与类之间的交互关系 4 将类组装起来并提供执行入口 二 如何进行面向对象编程 1 接口实现
  • socket网络编程几大模型?看看CHAT是如何回复的?

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

随机推荐

  • 【数据结构入门】队列(Queue)详解(定义、销毁、入队、出队等)

    文章目录 1 前言 1 队列的概念 2 队列的结构 2 队列的实现 链式结构 1 队列的定义 2 队列的初始化 3 队列的销毁 4 入队 尾插 5 出队 头删 6 获取队列元素个数 7 获取队头元素 8 获取队尾元素 9 检查队列是否为空
  • Qt 获取程序所在路径等特殊路径的方法

    目录 经常我们的程序中需要访问一些特殊的路径 比如程序所在的路径 用户目录路径 临时文件夹等 在 Qt 中实现这几个功能所用的方法虽然都不难 但是各不相同 每次用到时还要现去查 很不方便 因此就写了这篇博客 把这几种需求的实现方式总结了一下
  • 2022春招前端最新面试题分享(牧原股份)

    牧原股份 公司及岗位信息 公司 牧原股份 岗位 前端开发工程师 地点 河南 薪资 12k 16k 面试结果 一面后暂时未接到通知 一面HR技术群面 2022 04 19 自我介绍 期望薪资 你认为你为什么值这个钱 JS常用的数据类型 分辨引
  • Spring Boot(一)

    什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架 其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程 该框架使用了特定的方式来进行配置 从而使开发人员不再需要定义样板化的配置 Sp
  • UG10.0安装方法及步骤

    1 右击软件压缩包 选择解压到 UG10 64bit 选项 2 打开破解文件夹下的NX10 0 JAVA X64位exe文件 3 然后点下一步 4 下一步 5 选择安装目录 默认安装在 C Program Files Java jdk18
  • 面试华为,花了2个月才上岸,真的难呀····

    花2个月时间面试一家公司 你们觉得值吗 背景介绍 美本计算机专业 代码能力一般 之前有过两段实习以及一个学校项目经历 第一份实习是大二暑期在深圳的一家互联网公司做前端开发 第二份实习由于大三暑假回国的时间比较短 小于两个月 于是找的实习是在
  • 最大化期望算法(EM)详解

    我们知道最大似然估计的根本目的是根据抽样的到的样本 即数据 反推出最有可能的分布参数 即模型 这是一个非常典型的机器学习的思想 所以在很多领域最大似然估计有着极为广泛的应用 然而 如果已知的数据中含有某些无法观测的隐藏变量时 直接使用最大似
  • 手写Vue个人组件库———fl-Cascader

    您好 如果喜欢我的文章 可以关注我的公众号 量子前端 将不定期关注推送前端好文 接上文 封装了个人Vue组件库的Cascader级联选择器 源码附在了文章末尾 如下是文档使用说明 Cascader 级联选择器 当一个数据集合有清晰的层级结构
  • 滑动窗口的最大值java

    题目描述 给定一个数组和滑动窗口的大小 找出所有滑动窗口里数值的最大值 例如 如果输入数组 2 3 4 2 6 2 5 1 及滑动窗口的大小3 那么一共存在6个滑动窗口 他们的最大值分别为 4 4 6 6 6 5 针对数组 2 3 4 2
  • 分布式任务调度平台XXL-JOB(超详细喂嘴版)

    1 XXL JOB框架 1 0 环境 Maven3 Jdk1 8 Mysql5 7 1 1 下载源码 https github com xuxueli xxl job 1 2 中文文档 https www xuxueli com xxl j
  • Linux多线程编程---线程间同步(互斥锁、条件变量、信号量和读写锁)

    本篇博文转自http zhangxiaoya github io 2015 05 15 multi thread of c program language on linux Linux下提供了多种方式来处理线程同步 最常用的是互斥锁 条件
  • Qt5.7 Qt for Embedded Linux

    从Qt5 0开始 Qt不再包含自己的视窗系统了 QWS 对于单屏幕的情况 使用QtPlatform Abstraction是一个很好的选择 多屏的情况可以通过Wayland实现 有许多跨平台的插件可以使用 EGLFS LinuxFB KMS
  • 解析不同种类的StableDiffusion模型Models,再也不用担心该用什么了

    Stable Diffusion是一个基于Latent Diffusion Models 潜在扩散模型 LDMs 的文图生成 text to image 模型 具体来说 Stable Diffusion在 LAION 5B 的一个子集上训练
  • 《解构领域驱动设计》- 领域驱动设计统一过程

    更多内容关注微信公众号 fullstack888 领域驱动设计的核心是模型驱动设计 而模型驱动设计的核心又是领域模型 领域模型必须在统一语言的指导下获得 领域模型又可进一步细分为核心子领域 通用子领域和支撑子域 系统上下文 限界上下文 分层
  • python 中字典{ }的嵌套

    在机器学习中会用字典的嵌套来存储决策树的信息 对绘制树形图有很大的作用 其中嵌套字典的生成是一个递归的过程 如下所示 gt gt gt s a 0 no 1 flippers 0 no 1 maybe b 构造字典 gt gt gt s a
  • VUE element-ui 之table表格导出Excel(自定义表头+自定义导出字段内容)

    导出excel自定义表头及自定义字段步骤 1 安装依赖 npm install save xlsx file saver npm install D script loader 2 下载Blob js export2Excel js 百度网
  • 在BSN武汉链上部署solidity智能合约(转载)

    分享一篇不错的关于武汉链的入门技术文章 原文连接 在BSN武汉链上部署solidity智能合约 登链社区 区块链技术社区 在BSN武汉链上部署solidity智能合约 BSN简介区块链服务网络 Blockchain basedService
  • 【STM32】使用单片机DAC产生噪声群

    前期准备 软件平台 基于KEIL的HAL库开发 硬件平台 正点原子STM32F4探索者开发板 STM32F4 DAC 简介 STM32F4 的 DAC 模块 数字 模拟转换模块 是 12 位数字输入 电压输出型的 DAC DAC 可以配置为
  • Linux系统调用

    一 概述 现代操作系统中 内核提供了用户进程与内核进行交互的一组接口 这些接口让应用程序受限地访问硬件设备 提供了创建新进程并与已有进程进行通信的机制 也提供了申请操作系统其它资源的能力 这些接口就称为系统调用接口 Linux系统也提供了类
  • 7.代理模式

    1 UML 2 代码 include