/****************************************************************************************************
链式
概念(使用一个单链表,尾结点指向空,然后挨个遍历此结点指向的函数(这些函数都来自与抽象类中函数的重写)
将则责任链上的对象统统创建出来,然后执行到哪个对象,哪个对象就去调用这个重写的函数方法)
适用于:
链条式处理事情。工作流程化、消息处理流程化、事物流程化;

****************************************************************************************************/
#include <iostream>
using namespace std;
class CarHandle//责任链,设计一个类将其创建成链
{
public:
virtual void HandleCar() = 0;
public:
CarHandle *setNextHandle(CarHandle *carhandle)
{
this->carhandle = carhandle;
return this->carhandle;
}
protected:
CarHandle *carhandle;
};
class CarHandleHead : public CarHandle
{
public:
virtual void HandleCar()
{
cout << "处理车头" << endl;
if (this->carhandle != NULL)
{ carhandle->HandleCar(); }
}
};
class CarHandleBody : public CarHandle
{
public:
virtual void HandleCar()
{
cout << "处理车身" << endl;
if (this->carhandle != NULL)
{ carhandle->HandleCar(); }
}
};
class CarHandleTail : public CarHandle
{
public:
virtual void HandleCar()
{
cout << "处理车尾" << endl;
if (this->carhandle != NULL)
{ carhandle->HandleCar(); }
}
};
class CarHandleyou : public CarHandle
{
public:
virtual void HandleCar()
{
cout << "handle you" << endl;
if (this->carhandle != NULL)
{
carhandle->HandleCar();
}
}
};
void main()
{
CarHandleHead *head = new CarHandleHead;
CarHandleBody *body = new CarHandleBody;
CarHandleTail *tail = new CarHandleTail; //这里是创建一些列的对象,对象包含下一个结点的指针
CarHandleyou  *you = new CarHandleyou;
head->setNextHandle(body);//在这里将这些函数使用链表串起来
body->setNextHandle(tail);
tail->setNextHandle(you);
you->setNextHandle(NULL);

//处理
head->HandleCar();
delete head;
delete body;
delete tail;
delete you;
system("pause");

}

参考: 传智播客--王保明

设计模式---责任链模式(C++实现)相关推荐

  1. Java设计模式-责任链模式

    Java设计模式-责任链模式,我想这是值得你了解一下下的啦. 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持 ...

  2. 设计模式--责任链模式--Java实现

    设计模式–责任链模式–Java实现 责任链模式–链式数据结构–内存消耗–Java的awt事件一开始用责任链模式后来改为观察者模式–为什么呢?–现在的应用–dom事件–异常处理机制-过滤器链–等等 学习 ...

  3. 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器

    理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...

  4. java责任链模式审批请假_Java设计模式-责任链模式

    Java设计模式-责任链模式 Java版本:jdk1.8 IDE:IDEA 一 前言 本文介绍责任链模式以及Java下的实现. 二 概念 1.什么是责任链模式 责任链模式(Chain of Respo ...

  5. 一起学设计模式 - 责任链模式

    责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...

  6. 大话设计模式—责任链模式

    顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...

  7. 设计模式 责任链模式

    责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...

  8. php设计模式-责任链模式

    最近重构代码发现责任链模式非常实用,所以简单总结了一下.总体来说,责任链模式更像是一种简化多种场景下调用处理的一种设计模式,特别适合if-else分支判断很多的场景.比如是根据不同会员等级给予不同的优 ...

  9. 深入理解设计模式-责任链模式(职责链模式)

    文章目录 一.定义 二.使用场景 三.代码样例 1.需求 2.设计一个所有处理器都要实现的接口 3.实现各种处理器 4.客户端 5. 输出 四.要点与优缺点 结尾 一.定义 避免请求发送者与接收者耦合 ...

  10. 工作中常用的设计模式 -- 责任链模式

    一般做业务开发,不太容易有大量使用设计模式的场景.这里总结一下在业务开发中使用较为频繁的设计模式.当然语言为 Java,基于 Spring 框架. 1 责任链模式(Chain of Responsib ...

最新文章

  1. CVPR 2022官方发布重要通知,禁止审稿期公开传播论文,静默期4个多月
  2. 从深度图到点云的构建方式
  3. es6学习笔记2-—symbol、变量与作用域
  4. 实践操作:六步教你如何用开源框架Tensorflow对象检测API构建一个玩具检测器
  5. CF1038D Slime 构造
  6. 传图识字java_Java:全面 清晰的 NIO 学习攻略
  7. 用户注意到用户计算机中千兆位网卡,为何你电脑上的千兆网卡跑不到千兆?
  8. 自研芯片鸿蒙系统,华为智慧屏:自研智慧芯片鸿蒙系统 9月发布
  9. CSRF:跨站请求伪造
  10. CoreData 从入门到精通(五)CoreData 和 TableView 结合
  11. 啊u学科学计算机,动画 | 《阿U学科学》:开学啦!在游戏中学习科学知识吧
  12. Redis学习总结(5)——阿里云Redis开发规范
  13. java8 comparator接口_Java8 Comparator 排序方法
  14. 【Java并发.3】对象的共享
  15. 【数字信号处理】基于matlab数字信号离散序列短时傅里叶变换【含Matlab源码 1545期】
  16. mid制作乐谱_乐谱编辑(在线简谱制作软件)
  17. 一些非常简单的Python代码
  18. MOEA/D算法原理及应用方向
  19. python贴吧爬虫-python贴吧爬虫
  20. wordpress添加备案链接 亲测无误

热门文章

  1. SAP编辑器ABAP代码添加模板
  2. SQL Server 修改AlwaysOn共享网络位置
  3. 关于 Unix 用户权限及进程权限及 Saved set-user-id
  4. HTML5 DOM File API 转)
  5. ASP.NET 实践:锁定 ASP.NET 配置设定
  6. linux目录与文件
  7. Cocos2d-xUI组件详解
  8. 使用linux服务器实现路由器的功能(实验)
  9. 济宁a货翡翠,芜湖a货翡翠
  10. 物联网(IoT)的11大云平台:AWS、Azure、谷歌云、Oracle、