7.代理模式

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【结构型】代理模式(Proxy)

目录 代理模式(Proxy)适用场景代理模式实例代码&#xff08;Java&#xff09; 代理模式(Proxy) 为其他对象提供一种代理以控制对这个对象的访问。Proxy 模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候。 适用场景 远程代理 (Remote Proxy) 为一个对象在不同…

【Git】03-GitHub

文章目录 1. GitHub核心功能2. GitHub搜索项目3. GitHub搭建个人博客4. 团队项目创建5. git工作流选择5.1 需要考虑的因素5.2 主干开发5.2 Git Flow5.3 GitHub Flow5.4 GitLab Flow(带生产分支)5.4 GitLab Flow(带环境分支)5.4 GitLab Flow(带发布分支) 6. 分支集成策略7. 启用…

功能基础篇3——Python中的输入输出、文件读写、序列化

IO 文件读写 open open()为内置函数&#xff0c;用于读写文件 mode 读写 x&#xff0c;create&#xff0c;创建&#xff0c;文件存在报错&#xff0c;可写不可读r&#xff0c;read&#xff0c;读入&#xff0c;默认读写方式&#xff0c;文件不存在报错&#xff0c;可读不可…

redis桌面连接工具Another Redis Desktop Manager使用介绍

Another Redis Desktop Manager是一种类似于navicat的数据库连接工具&#xff0c;专门用来连接redis&#xff0c;使用起来非常简单方便&#xff0c;在这里推荐给大家。 没有用过这个软件的&#xff0c;首先通过下面的网盘链接下载Another Redis Desktop Manager 百度网盘redi…

权限提升WIN篇(腾讯云,CS,MSF)

溢出漏洞 信息收集 操作系统版本ver&#xff0c;systeminfo漏洞补丁信息systeminfo操作系统位数systeminfo杀软防护tasklist /svc网络netstat -ano,ipconfig当前权限whoami 筛选EXP 根据前面的信息收集中的系统版本&#xff0c;位数和补丁情况筛选出合适的EXP 提权 根据EX…

Ubuntu22.04 Opencv4.5.1 CPU和GPU编译攻略,Opencv CPU和GPU编译保姆教程 亲自测试。

1、安装opencv依赖 安装时最好更换一下源。 sudo apt-get -y update sudo apt-get -y install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get -y install libgtk-3-dev gfortran openexr libatlas-base-dev python3-dev pyt…

flutter开发实战-长按TextField输入框cut、copy设置为中文复制、粘贴

flutter开发实战-长按TextField输入框cut、copy设置为中文复制、粘贴 在开发过程中&#xff0c;需要长按TextField输入框cut、copy设置为中文“复制、粘贴”&#xff0c;这里记录一下设置的代码。 一、pubspec.yaml设置flutter_localizations 在pubspec.yaml中设置flutter_l…

[python 刷题] 238 Product of Array Except Self

[python 刷题] 238 Product of Array Except Self 题目&#xff1a; Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i]. The product of any prefix or suffix of nums is guar…

程序员必须掌握的算法

引言 作为一名程序员&#xff0c;掌握一些重要的算法是必不可少的。算法是解决问题的方法和步骤&#xff0c;对于程序员来说&#xff0c;熟悉和掌握一些常见的算法可以提高编程能力&#xff0c;解决复杂的计算问题。与此同时&#xff0c;算法是计算机科学中的核心概念&#xff…

pgsql/mysql/clickhouse性能对比

目前公司使用的关系型数据库版本较老&#xff0c;有计划对关系型数据库进行一次升级。有两个方案&#xff0c;一是将现在的mysql5.7升级到8.0&#xff0c;二是将数据库替换成pgsql15&#xff0c;所以对这两个库的查询写入和资源损耗进行一次对比。 前置准备 服务器 两台配置…

Cilium 1.11:服务网格的未来已来

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Linux Ubuntu命令行快速配置C++开发环境

本文介绍在Linux操作系统的Ubuntu版本中&#xff0c;基于命令行&#xff0c;快速配置C 编辑、编译、运行的代码开发环境的简便方法。 在之前的文章Linux操作系统Ubuntu 22.04配置Visual Studio Code与C代码开发环境的方法(https://blog.csdn.net/zhebushibiaoshifu/article/det…

星际争霸之小霸王之小蜜蜂(十三)--接着奏乐接着舞

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十二&#xff09;--猫有九条命 星际争霸之小霸王之小蜜蜂&#xff08;十一&#xff09;--杀杀杀 星际争霸之小霸王之小蜜蜂&#xff08;十&#xff09;--鼠道 星际争霸之小霸王之小蜜蜂&#xff08;九&#xff09;--狂鼠之…

什么是集成测试?集成测试方法有哪些?

1、基本概念&#xff1a; 将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。集成测试主要是针对软件高层设计进行测试&#xff0c;一般来说是以模块和子系统为单位进行测试。 2、集成测试包含的层次&#xff1a; 1. 模块内的集成&#xff0c;主要是…

Linux sed

1.sed介绍 sed:Stream Editor&#xff0c;流编辑器、行编辑器、逐行编辑 sed将每行内容读入到“内存”中&#xff0c;在内存中进行处理&#xff0c;将结果返回给屏幕&#xff0c;此段内存空间称为模式空间。 sed默认不编辑原文件&#xff0c;仅对模式空间的数据进行处理&…

OA 电子审批流程是什么?

公司中&#xff0c;最最最常见也是最最最多的就是——各种审批。 我当年第一次实习&#xff0c;在一家国企的行政部门&#xff0c;我们部门领导那个时候最主要的工作就是“打通流程”&#xff0c;咱也不知道他在打通什么流程&#xff0c;反正这个很重要就是了。 结果&#xf…

CSS动效合集之实现气泡发散动画

前言 &#x1f44f;CSS动效合集之实现气泡发散动画&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义一个数组bubbles&#xff0c;用来存储气泡列表的基本新&#xff0c;w表示宽高&#xff0c;x表示绝对定位…

【Python基础】P01S01 变量与字符串

P01S01 变量与字符串 变量变量的命名规则 字符串字符串的表达方法字符串的基本操作 数整数与浮点数数中下划线常量 注释 变量 变量的命名规则 变量名只能包含字母、数字和下划线&#xff1b; 变量名能以字母或下划线开头&#xff0c;但是不能以数字开头&#xff1b; 变量名不能…

130. 被围绕的区域

130. 被围绕的区域 题目-中等难度示例1. 新建boardbfs2. 哈希bfs 题目-中等难度 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 ‘X’ 和 ‘O’ &#xff0c;找到所有被 ‘X’ 围绕的区域&#xff0c;并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例 示例 1&#x…

6.SpringEL与List,Map

SpringEL与List,Map 文章目录 SpringEL与List,Map介绍Spring EL以注解的形式Spring EL以XML的形式 介绍 使用SpEL与 Map 和 List 的工作方式与Java是完全一样的 //get map whete key MapA Value("#{testBean.map[MapA]}") private String mapA;//get first value …