当前位置: 首页 > news >正文

CH01_适应设计模式

Iterator模式(迭代器模式)

迭代器模式(Iterator),提供一种方法,顺序访问一个聚合对象中各个元素,而不是暴露该对象的内部表示。

类图结构

在这里插入图片描述

说明

  • Iterator(迭代器)

    该角色负责定义按顺序逐个遍历元素的接口(API)。类图中定义的hasNext和next两个函数。hasNext用于判断是否存在下一个元素,next用于获取元素

  • ConcreteIterator(具体的迭代器)

    该角色负责实现Iterator定义的接口(API)

  • Aggregate(集合)

    该角色负责定义创建Iterator接口对象。

  • ConreteAggregate(具体的集合)

    该角色负责实现Aggregate角色所定义的接口(API)。它会创建出来具体的Iterator角色,即ConcreteIterator角色。

其他

原书中给的例子存在不恰当的地方:BookShelf类与BookShelfIterator之间是相互引用关系,这不是一个好现象;可以将BookShelf中的记录Book对象的数组迁移到BookShelfIterator,这样只保留BookShelf对BookShelfIterator的引用,降低类之间的耦合。

Adapter模式(适配器模式)

适配器模式(Adapter),将一个类的接口转成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

类图

继承实现

在这里插入图片描述

委托实现

在这里插入图片描述

说明

  • Target(对象)

    该角色负责定义所需要的方法。

  • Client(请求者)

    该角色负责使用Target角色所定义的方法进行具体处理。

  • Adaptee(被适配)

    被适配的角色,Adaptee是一个持有既定方法的角色,Target因某种原因无法直接使用这些方法。

  • Adapter(适配)

    Adapter模式的主人公。使用Adapter角色的方法来满足Target角色的需求,这是Adapter模式的目的,也是Adapter角色的作用。

相关文章:

CH01_适应设计模式

Iterator模式(迭代器模式) 迭代器模式(Iterator),提供一种方法,顺序访问一个聚合对象中各个元素,而不是暴露该对象的内部表示。 类图结构 说明 Iterator(迭代器) 该角色负责定义按…...

电机工作制

电机工作制 1.什么是电机工作制2.电机工作制的分类 最近在做电机控制器,看到很多电机铭牌上写着工作制:S*,有S1,有S2,查了一下,学习一下是什么意思。 1.什么是电机工作制 根据GBT 755-2019《旋转电机定额…...

qt国际化多语言

vs + qt 方法 一 (1)生成.pro文件 如果报错: cannot find any qt projects to export 则执行如下: 然后重新生成 pro文件。 (2)生成ts文件 (方法1)在项目文件(xxx.pro) 文件添加: TRANSLATIONS += en.ts zh_CN.ts 然后打开cmd命令,进入项目目录,执行 l…...

Java Excel Poi 单元格内置的数据格式

位置 //在类 org.apache.poi.ss.usermodel.BuiltinFormats 中的私有成员变量_formats中 private static final String[] _formats new String[]{"General", "0", "0.00", "#,##0", "#,##0.00", "\"$\"#,##…...

【深入剖析K8s】容器技术基础(三):深入理解容器镜像 文件角度

容器里的进程‘看到’’的文件系统 可能你立刻就能想到,这应该是一个关于MountNamespace的问题:容器里的应用进程理应‘看到”一套完全独立的文件系统这样它就可以在自己的容器目录(比如 /tmp)下进行操作’而完全不会受宿主机以及其他容器的影响。 容器…...

竞赛选题 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测

文章目录 0 简介1 基于 Keras 用 LSTM 网络做时间序列预测2 长短记忆网络3 LSTM 网络结构和原理3.1 LSTM核心思想3.2 遗忘门3.3 输入门3.4 输出门 4 基于LSTM的天气预测4.1 数据集4.2 预测示例 5 基于LSTM的股票价格预测5.1 数据集5.2 实现代码 6 lstm 预测航空旅客数目数据集预…...

开源WIFI继电器之源代码

源代码:WiFiRelay: 基于ESP8285的WiFi继电器代码 1、环境搭建 开发环境搭建请参照win10搭建ESP8266_RTOS_SDK编译环境_xtensa-lx106 下载-CSDN博客 2、下载代码 在sdk路径下创建一个projects的文件夹,将WiFiRelay的代码克隆到此目录下: mkdir projec…...

NX二次开发UF_CURVE_create_arc_point_point_radius 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_arc_point_point_radius Defined in: uf_curve.h int UF_CURVE_create_arc_point_point_radius(tag_t point1, tag_t point2, double radius, UF_CURVE_limit_p_t l…...

Unsupervised MVS论文笔记(2019年)

Unsupervised MVS论文笔记(2019年) 摘要1 引言2 相关工作3 实现方法3.1 网络架构3.2 通过光度一致性学习3.3 MVS的鲁棒光度一致性3.4 学习设置和实施的细节3.5.预测每幅图像的深度图 4 实验4.1 在DTU上的结果4.2 消融实验4.3 在ETH3D数据集上的微调4.4 在…...

2-Python与设计模式--前言

0-Python与设计模式–前言 一 什么是设计模式 设计模式是面对各种问题进行提炼和抽象而形成的解决方案。这些设计方案是前人不断试验, 考虑了封装性、复用性、效率、可修改、可移植等各种因素的高度总结。它不限于一种特定的语言, 它是一种解决问题的思…...

如何判别使用的junit是4还是5

Junit4与Junit5的版本中,Test注解的包位置不同。 Junit4的Test注解是在org.junit包下,儿Junit5的Test注解是在org.junit.jupiter.api包下。 可据此判定是使用的Junit4还是Junit5。 Junit4 import org.junit.Test;Junit5 import org.junit.jupiter.api…...

C#-创建用于测试的父类StartupBase用于服务注入

当写完C#代码,需要对某个方法进行测试。 创建一个XXXTests.cs文件之后,发现需要注入某个服务怎么办? 再创建一个StartupBase.cs文件: public abstract class StartupBase {public IConfiguration Configuration { get; }public …...

JMeter之压力测试——混合场景并发

在实际的压力测试场景中,有时会遇到多个场景混合并发的情况,这时就需要设置不同的并发比例对不同场景请求数量的控制,下面提供两种方案。 一、多线程组方案 1.业务场景设计如下:场景A、场景B、场景C,三个场景按照并发…...

Python入门04字符串

目录 1 字符串的定义2 转义字符3 字符串的常见方法4 分割字符串5 字符串反转6 字符串的链式调用7 格式化字符串8 多行字符串总结 1 字符串的定义 在Python中,字符串表示一个字符的序列,比如 str "hello,world"这里我们定义了一个字符串&…...

vue3(四)-基础入门之 fetch 与 axios

一、fetch 1、axios和fetch的区别 Axios 和 Fetch 都是 JavaScript 中用于发送 HTTP 请求的 API,它们的主要区别在以下方面: 1.Axios 支持更广泛的浏览器和 Node.js 版本,而 Fetch 只能在较新的浏览器中使用,或需要使用 polyfi…...

2016年五一杯数学建模C题二孩政策问题解题全过程文档及程序

2016年五一杯数学建模 C题 二孩政策问题 原题再现 多年来实施的严、紧计划生育政策对控制人口增长起到关键作用。在优生优育政策的指引下,我国人口质量显著提高,但也带来了不利影响,生育率偏低、男女比例失衡、人口老龄化情况严重等问题。2…...

学习c#的第二十四天

目录 C# 事件(Event) 事件概述 如何订阅和取消订阅事件 以编程方式订阅事件 使用匿名函数订阅事件 取消订阅 如何发布符合 .NET 准则的事件 发布基于 EventHandler 模式的事件 如何在派生类中引发基类事件 如何实现接口事件 如何实现自定义事…...

ELK企业级日志分析平台——logstash

部署 新建一台虚拟机elk4部署logstash [rootelk4 ~]# yum install -y jdk-11.0.15_linux-x64_bin.rpm[rootelk4 ~]# yum install -y logstash-7.6.1.rpm 命令方式 [rootelk4 bin]# /usr/share/logstash/bin/logstash -e input { stdin { } } output { stdout {} } elasticsearc…...

laravel8中常用路由使用(笔记四)

目录 1、框架路由目录统一放该目录 2、基本路由,路由都调用Route方法 3、控制器使用路由 4、路由参数 5、路由组 6、命名路由 7、命令查看当前路由列表 8、路由缓存 在Laravel 8中,路由定义了应用程序中接受请求的方式。它们定义了URL和相应的控制器方法之间的…...

理解 <script> 标签的 defer 和 async 属性

当我们在编写网页时&#xff0c;经常需要在 HTML 文件中引入 JavaScript 文件。这时候&#xff0c;我们通常会使用 开始 在介绍 defer 和 async 属性之前&#xff0c;我们先来看一下 <script src"path/to/script.js"></script>这段代码会在浏览器解…...

3个维度解锁抖音内容采集:从个人创作到企业运营的效率革命

3个维度解锁抖音内容采集&#xff1a;从个人创作到企业运营的效率革命 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

终端设备可靠性检测报告:读懂设备耐用密码

日常使用手机、智能手表、家用路由器等终端设备时&#xff0c;我们总希望它“扛造耐用”&#xff0c;不轻易出故障。这份终端设备可靠性检测报告&#xff0c;就用通俗的话拆解设备耐用的核心密码&#xff0c;让大家明白&#xff0c;一台靠谱的设备&#xff0c;背后都经过了哪些…...

已过期域名对SEO优化有什么影响

已过期域名对SEO优化有什么影响 在当今数字化时代&#xff0c;网站的搜索引擎优化&#xff08;SEO&#xff09;对于吸引流量和提升品牌知名度至关重要。域名作为网站的身份标志&#xff0c;其质量和历史往往对SEO有着深远影响。本文将探讨已过期域名对SEO优化有什么影响&#…...

从双摄手机到自动驾驶:对极几何(Epipolar Geometry)在现实世界中的5个应用场景

从双摄手机到自动驾驶&#xff1a;对极几何在现实世界中的5个应用场景 当你用手机拍摄人像模式照片时&#xff0c;是否好奇过背景虚化效果如何精准识别主体&#xff1f;当自动驾驶汽车在复杂路况中穿行&#xff0c;又是如何判断前方障碍物的距离&#xff1f;这些看似神奇的技术…...

革新性量化交易平台:基于Backtrader的高效策略回测工具实现方法

革新性量化交易平台&#xff1a;基于Backtrader的高效策略回测工具实现方法 【免费下载链接】backtrader-pyqt-ui 项目地址: https://gitcode.com/gh_mirrors/bac/backtrader-pyqt-ui Backtrader可视化平台是一款融合PyQt界面框架与finplot图表库的革新性量化交易回测工…...

Shell运算详解:expr、$(())、awk与浮点数运算【20260404】

文章目录 Shell运算详解:expr、$(())、awk与浮点数运算 1. Shell整数运算基础 1.1 expr 命令 1.2 $(( )) 算术扩展 2. awk 数值运算 2.1 awk 基础运算 2.2 awk 处理数据文件 3. 浮点数运算解决方案 3.1 使用bc进行浮点运算 3.2 使用awk进行浮点运算 4. 系统管理实战案例 4.1 案…...

2026届学术党必备的降AI率工具解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在展开内容创作之际&#xff0c;要想降低 AIGC 的生成比例&#xff0c;就得从源头着手加以干…...

Vim 快捷键手册

Vim 快捷键手册 模式说明 普通模式&#xff08;Normal&#xff09;&#xff1a;默认模式&#xff0c;用于导航和命令执行插入模式&#xff08;Insert&#xff09;&#xff1a;输入文本可视模式&#xff08;Visual&#xff09;&#xff1a;选择文本命令模式&#xff08;Command&…...

别再为ChatTTS声音飘忽发愁了!手把手教你用Python代码+高质量.pt音色文件,生成稳定语音

用Python和优质音色文件打造稳定语音合成体验 语音合成技术正在改变内容创作的方式&#xff0c;但很多开发者在实际使用ChatTTS时都会遇到一个共同的困扰——生成的语音音色飘忽不定&#xff0c;每次输出都像开盲盒。这种不稳定性严重影响了专业场景下的使用体验&#xff0c;比…...

5个实战场景:QuickBMS的资源提取全流程指南

5个实战场景&#xff1a;QuickBMS的资源提取全流程指南 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS QuickBMS是一款开源的资源提取工具&#xff0c;集成超过400种压缩和加密算法&#xff0c…...