c++之职责链模式

Qt usb通讯 Qt通讯方式有很多,如Tcp/Ip、串口等,但对Usb通讯支持较弱,此篇主要描述Qt与plc设备通过usb进行通讯的解决方法;5)使用函数hid_read/hid_write读写usb口,例如:写入开始测试。3)解析时注意先把char转为16进制,再进行数值提取,如下提取第5为数据。3)线程中,m_Handle默认为空,定时1秒检测是否有接入usb。3)检测到指定的pid、vid后,重新打开usb。4)线程中执行打开操作,创建新的usb描述符。4)根据指定pid、vid,打开usb口。 阅读详情

职责链模式

定义:使得多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着该链传递该请求,直到有一个对象处理它为止。

属于行为型模式。

代码:

#include <iostream>

using namespace std;

class Handle{
public:
	void setHandle(Handle *h)
	{
		m_handle = h;
	}
	virtual void handleRequest(int score) = 0;

	Handle *m_handle;
};

class ConcreteHandleA :public Handle
{
public:
	void handleRequest(int score)
	{
		if (score < 60)
		{
			cout << score << " 不及格,调入普通班级" << endl;
		}
		else
		{
			if (m_handle)
				m_handle->handleRequest(score);
		}
	}
};

class ConcreteHandleB :public Handle
{
public:
	void handleRequest(int score)
	{
		if (score >= 60 && score<80)
		{
			cout << score << " 及格,调入良好班级" << endl;
		}
		else
		{
			if (m_handle)
				m_handle->handleRequest(score);
		}
	}
};

class ConcreteHandleC :public Handle
{
public:
	void handleRequest(int score)
	{
		if (score >= 90)
		{
			cout << score << " 优秀,调入尖子班" << endl;
		}
	}
};

//客户端
int main()
{
	ConcreteHandleA *a = new ConcreteHandleA;
	ConcreteHandleB *b = new ConcreteHandleB;
	ConcreteHandleC *c = new ConcreteHandleC;
	a->setHandle(b);
	b->setHandle(c);

	int stuScore[] = { 30, 10, 80, 90, 99, 75, 49 };
	for (int x : stuScore)
	{
		a->handleRequest(x);
	}
	if (a)
	{
		delete a;
		a = nullptr;
	}
	if (b)
	{
		delete b;
		b = nullptr;
	}
	if (c)
	{
		delete c;
		c = nullptr;
	}

}

效果:

设计模式C++实现(14)——职责链模式 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。职责链模式 阅读详情

相关推荐

C++ 职责链模式

职责链模式(Chain of Responsibility Pattern)使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

青春不老,奋斗不止! 4477

[WinDBG 技巧] 列举所有Handle(句柄)以及查看Handle 信息

WinDBG的 !handle 命令可以让你方便调试句柄(handle)。 查看进程内所有句柄, 输入命令行 0:014> !handleHandle 4 Type DirectoryHandle 8 Type ProcessHandle c Type KeyHandle 10 Type ...

anjichan4261的博客 940

C++ 实现职责链模式

职责链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它将请求的发送者和接收者解耦,并使多个对象都有机会处理这个请求。本文将使用 C++ 语言实现职责链模式,并提供相应的源代码。本文介绍了职责链模式的概念和实现,并提供了 C++ 语言的源代码。职责链模式能够有效地解耦请求的发送者和接收者,并使多个对象都有机会处理该请求。接口,并根据请求的大小判断自己是否能够处理该请求。如果不能处理,则交给下一个处理者处理。客户端创建具体处理者对象,并将它们连接成一条链。

带你成为别人眼中的大佬! 97

C++之责任链(Chain of Responsibility)模式

0. 简介 对于责任链模式,其作为一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。这种处理方法类似包与包之间的调用的思路,只是其可以不在主程序中累赘的去申明一堆if else变量使得程序更加臃肿。 相比于创建设计模式的对整体架构进行的设计,和结构设计模式对对象的化繁为简的操作,作为行为设计模式,其需要我们对数据流能够充分的把握,来避免检查代码的混乱不堪。 而每次新增功能都会使其更加臃肿。 修改某个检查步骤有时会影响其他的检查

lovely_yoshino的博客 4862

C++ 职责链模式详解与示例

在这个示例中,订单金额为150,首先经过 Waiter 处理,但是 Waiter 无法处理该金额范围的订单,所以请求被传递给了 Manager,Manager 判断金额在其能够处理的范围内,因此处理该请求并输出信息。具体处理者实现了处理请求的方法,并决定是否能够处理请求,如果不能处理则将请求传递给下一个处理者。职责链模式是一种行为设计模式,旨在以链式方式处理请求,直到有一个处理者能够成功处理该请求为止。通过使用职责链模式,我们可以灵活地组织处理对象,并动态地确定请求的处理者,从而实现请求和处理者的解耦。

ByteWhisper的博客 92

Handle(句柄图形对象).m

绘图函数将不同的曲线或曲面绘制在图形窗口中,而图形窗口是由不同的对象(如:坐标轴、曲线、曲面、文字等)组成的图形界面。matlab给每个图形对象分配一个标识符,称为句柄。

C++ 设计模式——职责链模式

职责链(Chain Of Responsibility)模式也叫责任链模式,是一种行为型模式,用于将一个请求传递给一个链中的若干对象,哪个对象适合处理这个请求就让哪个对象来处理。职责链看起来与传统数据结构中的“链表”非常类似。

慢慢记录,慢慢更新。 2189

设计模式 - 职责链模式(C++实例)

职责链模式 设计模式 Chain of Responsibility 若有问题望指出。

设计模式之责任链模式(C++)

介绍设计模式之责任链模式

翟天保的博客 1万+

Abaqus仿真突然中断?手把手教你解决SIGTERM/SIGINT报错(附完整命令行方案)

本文深入解析Abaqus仿真中因SIGTERM或SIGINT信号导致进程意外中断的根本原因,并提供了一套完整的命令行解决方案。通过将作业提交方式从图形界面切换到命令行,并配合关键参数设置,可以有效避免因会话空闲超时或外部干扰引发的计算中断,保障长时间仿真任务的稳定运行。

devops8pract的博客 745

告别底噪与失真:手把手教你调校WM8988音频Codec的输入输出增益链

本文详细介绍了如何调校WM8988音频Codec的输入输出增益链,解决底噪与失真问题。从模拟输入增益、数字转换增益到输出放大增益,提供了具体的寄存器配置和调试策略,帮助开发者优化音频信号处理链,提升音质表现。

weixin_30485379的博客 362

c++职责链模式

1.对职责链的理解 客户端发出一个请求时,有不同的对象都可以处理这个类型的请求,但是我们不知道最终哪个对象会处理它,于是用一个链路的方式传递这个请求,直到有能处理处理这个具体的请求。 2.职责链的好处 避免了不同对象都要显示调用处理这个请求的方法,避免耦合性。只需要一个对象显示调用,它处理不了时会传递给它指向的下个对象。 c++实现简单的职责链 #include <iostream> class Handler { protected: Handler* success..

BlingBLing_ok的博客 1208

SAP SD模块进阶:VA31和VA01底层竟是同一个BAPI?揭秘销售单据创建的统一逻辑

本文深入解析SAP SD模块中VA31和VA01的底层统一架构设计,揭示两者如何通过同一个BAPI `SD_SALESDOCUMENT_CREATE`实现销售单据创建。通过ABAP调试和参数化设计分析,展示了SAP如何利用单据类型(doc_type)等关键字段实现业务逻辑复用,为开发者提供配置化设计的重要启示。

weixin_30561177的博客 243

C++迭代器与职责链模式实战

迭代器模式和职责链模式都是常用的行为型设计模式,它们分别解决了不同的问题。迭代器模式提供了一种统一的遍历聚合对象的方式,而职责链模式则允许请求沿着处理者链传递,直到被处理。理解和掌握这两种模式,可以帮助你编写出更加灵活、可维护和可扩展的 C++ 代码。

m0_67599885的博客 1722

FreeFEM++下载安装和使用

最近要利用机器学习求解一些偏微分方程,对于一些复杂的偏微分方程,需要一些精度比较高的参考解,导师推荐了FreeFEM++软件。首次使用,特此记录一下,以备以后查阅。 1、FreeFEM++简介 FreeFEM是开源的有限元模拟系统,有法国利翁斯实验室、埃尔和玛丽居里大学共同开发,在世界范围内广泛使用。 2、FreeFEM++去何处下载? 下载地址:https://freefem.org/ 点击Download,然后会跳转到 https://github.com/FreeFem/FreeFem-source

夜晓岚的博客 1万+

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8025

c++设计模式(职责链模式)

职责链模式(Chain of Responsibility): 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 好比高中时候语文老师要在某个学习小组里找一个能背下来全篇长歌行的同学,点名第一个,第一个不会下一个,如此循环总会找到一个会的同学...... 其中的关键就是当客户...

Hyl的博客 704

信奥编程启蒙 3068:【例13.3】时间差

现在给出一个时间,单位是秒,要求按照电子表格式输出,输出保证不会超过 2424 小时。3067:【例13.2】 电子表。把时间转化成电子表格式输出。电子表上的时间显示方法形如。

900

c++ 职责链模式

c++ 职责链模式(Chain of Responsibility) 职 责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处 理它为止。其思想很简单,考虑员工要求加薪。公司的管理者一共有三级,总经理、总监、经理,如果一个员工要求加薪,应该向主管的经理申请,如果加薪的数量 在经理的职权内,那么经理可以直接批...

huangyimo的专栏 431

【肌电处理】肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率【含Matlab源码 3386期】

肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 821

开源数字人、虚拟直播部署教程

对,你无看错,是欧美的。在直播带货案例里,我们把模型导入到ue4,我们给模型在ue4里预设了四个动作(站着、站着说话、坐着、坐着说话),三个表情(平静、开发、愤怒),三个镜头(全局、近矩说话、看显示器播放商品展示)。我们只需要把目标主播的直播给录制下来,提取样本数据,然后训练一个从粉丝的不同刺激的组合,到主播的不同响应方式的多元逻辑回归的数学模型参数即可。

南七小僧的学海无涯 4559

C++设计模式——职责链模式( Chain of Responsibility Pattern)

C++设计模式——职责链模式( Chain of Responsibility Pattern) 目录 文章目录C++设计模式——职责链模式( Chain of Responsibility Pattern)目录定义代码示例总结参考资料 定义 Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the recei

leonardohaig的博客 2003

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

设计模式:职责链模式 C++实现

文章目录前言1. 职责链模式理解2. C++实现职责链模式总结 前言 今天复习了下职责链模式,并用c++实现了该模式的一个简单例子。 1. 职责链模式理解 职责链模式,顾名思义,不同职责由不同对象来完成,这些对象连成一条链,按照这条链来处理请求。看完该模式后,第一个想法就是可以用它改善冗长的if…else if … else语句,该模式满足单一职责原则与开放-封闭原则。 职责链模式比较正规的定义与类图结构(引用《大话设计模式》)如下所示: 从类图可以看出,该模式应用了类的多态技术:分别定义抽象类和具

DU_YULIN的博客 215

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

设计模式(二)职责链模式 C++

行为型设计模式一共有12个,下面介绍下第一个:职责链模式,它是对象行为型模式 一、意图: 职责链模式:使得很多对象都有机会处理请求,从而避免请求发送者和接收者之间的耦合关系。 将这些对象形成 一条链,沿着这条链处理请求,之道有一个对象处理为止二、适用性: 1、使得多个对象可以处理同一请求,对象请求顺序可自行确定 2、不明确指定接收者的情况,也就是不知道谁来处理请求的情况下...

开发笔记 259

C++设计模式之职责链模式

 http://www.jb51.net/article/55959.htm 这篇文章主要介绍了C++设计模式之职责链模式,本文讲解了什么是职责链模式、什么场合下使用、代码实例等内容,需要的朋友可以参考下 前言 最近心情很差,因为生活,因为工作;所以想请几天假去丽江玩玩。就向项目经理提交了休假申请,我的项目经理向项目主管提交了我的休假申请,项目主管向部门

步步为赢的专栏 491
上一篇: c++之中介者模式
下一篇: c++深拷贝与浅拷贝
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值