[C++]责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。
github源码路径:https://github.com/dangwei-90/Design-Mode
// 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//// 参考大话设计模式 - 责任链模式
// 责任链模式:有点像OA审批流畅,满足条件后一个一个往下走。#include <iostream>
#include <vector>#ifndef SAFE_DELETE
#define SAFE_DELETE(p) { if(p){delete(p); (p)=NULL;} }
#endifusing namespace std;class Handler {
public:virtual void SetNextHandler(Handler* handler) = 0;virtual void HandlerRequest(int count) = 0;protected:Handler* handler_ = nullptr;
};class FirstHandler :public Handler {
public:void SetNextHandler(Handler* handler) {handler_ = handler;}void HandlerRequest(int count) {if (count <= 10) {cout << "first handler get it: " << count << endl;}else {if (handler_ != nullptr) {handler_->HandlerRequest(count);}else {cout << "no next handler" << endl;}}}
};class SecondHandler :public Handler {
public:void SetNextHandler(Handler* handler) {handler_ = handler;}void HandlerRequest(int count) {if (count > 10 && count <= 20) {cout << "second handler get it: " << count << endl;}else {if (handler_ != nullptr) {handler_->HandlerRequest(count);}else {cout << "no next handler" << endl;}}}
};class ThirdHandler :public Handler {
public:void SetNextHandler(Handler* handler) {handler_ = handler;}void HandlerRequest(int count) {if (count >= 30) {cout << "third handler get it: " << count << endl;}else {if (handler_ != nullptr) {handler_->HandlerRequest(count);}else {cout << "no next handler" << endl;}}}
};int main()
{vector<int> nums = { 3, 10 ,2 ,54, 90, 33, 41, 5, 20 };FirstHandler* firsthandler = new FirstHandler();SecondHandler* secondhandler = new SecondHandler();ThirdHandler* thirdhandler = new ThirdHandler();firsthandler->SetNextHandler(secondhandler);secondhandler->SetNextHandler(thirdhandler);for (auto num : nums) {firsthandler->HandlerRequest(num);}SAFE_DELETE(firsthandler);SAFE_DELETE(secondhandler);SAFE_DELETE(thirdhandler);return 0;
}
[C++]责任链模式相关推荐
- Chain of Responsibility 责任链模式 MD
责任链模式 简介 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链,请求在这个链上[传递],直到链上的某一个对象决定处理此请求.发出这个请求的客户 ...
- Java 责任链模式
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...
- 设计模式之五 责任链模式(Chain of Responsibility)
2019独角兽企业重金招聘Python工程师标准>>> 一. 场景 相信我们都有过这样的经历: 我们去职能部门办理一个事情,先去了A部门,到了地方被告知这件事情由B部门处理: 当我们 ...
- 一起学设计模式 - 责任链模式
责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...
- 采购申请的处理流程 --- 责任链模式
前情提要 上集讲到小光梳理了公司的组织架构, 利用组合模式建立起了一个可扩展变化的多层的组织架构体系. 更清晰地明确了公司各个层级, 各个部门的职责. 大家明确职责, 通力合作, 让"小光热 ...
- 折腾Java设计模式之责任链模式
责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...
- 设计模式(9)-责任链模式详解(易懂)
责任链模式的定义 责任链模式是一种设计模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道 ...
- 最近学习了责任链模式
2019独角兽企业重金招聘Python工程师标准>>> 前言 来菜鸟这个大家庭10个月了,总得来说比较融入了环境,同时在忙碌的工作中也深感技术积累不够,在优秀的人身边工作必须更加花时 ...
- 设计模式第七讲-责任链模式
简介 责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止. 图例 责任链-根据事情大小来决 ...
- 工厂模式、策略者模式、责任链模式综合应用
设计模式的具体运用: 简单工厂模式.策略者模式.责任链模式定义与使用 classLoader的具体运用 自定义的classloader 来动态加载类 程序功能设计: 在商城购物时,商城可能会在特殊的日 ...
最新文章
- torch cpu版加载权重
- Java基础05 实施接口
- python测速程序_Python大数据分析学习.测试程序执行速度
- Linux服务器安全简明指南
- python连oracle数据库参数变量_带绑定字符串变量的Python cx_Oracle SQL
- php if变量满足数组,在php中使用if()查看数组中的日期是否等于变量中存储的日期...
- VS中多字节字符集和UNICODE字符集的使用说明
- 熵值法原理、应用及其Python实现
- 2015校园O2O商业模式解析——从社交切入
- 面试时如何更好的介绍自己的项目
- 如何远程公司 居家办公日渐常态 企业如何做好远程办公
- 从零开始的unity2d写游戏1#
- python中 utf-8 和GBK 的关系
- Echarts调整饼图大小、位置和柱状图高低、柱的宽度
- 四足步行机器人的结构设计及仿真
- jdbc读取mysql数据库_Ecplise 中利用 JDBC 连接 Mysql 数据库读取数据
- linux系统中的挂载有什么用,linux 挂载详解
- Android模拟器超出电脑屏幕的解决方法
- PPT结尾页只会写“谢谢”?用这些结尾,让你惊艳全场
- what is long tail effect