设计模式——职责链模式(C++实现)
#include <iostream>
#include <string> using namespace std; class Handler
{
public:
Handler(Handler* pstHandler): m_pstHandler(pstHandler)
{ } virtual void HandleRequest(int request) = ; protected:
Handler* m_pstHandler;
}; class ConcreteHandler1: public Handler
{
public:
ConcreteHandler1(Handler* pstHandler): Handler(pstHandler)
{ } virtual void HandleRequest(int request)
{
if (request < )
{
cout<< "组长:批假"<< request<< "天"<< endl;
}
else
{
m_pstHandler->HandleRequest(request);
}
}
}; class ConcreteHandler2: public Handler
{
public:
ConcreteHandler2(Handler* pstHandler): Handler(pstHandler)
{ } virtual void HandleRequest(int request)
{
if (request < )
{
cout<< "总监:批假"<< request<< "天"<< endl;
}
else
{
m_pstHandler->HandleRequest(request);
}
}
}; class ConcreteHandler3: public Handler
{
public:
ConcreteHandler3(Handler* pstHandler): Handler(pstHandler)
{ } virtual void HandleRequest(int request)
{
if (request < )
{
cout<< "经理:批假"<< request<< "天"<< endl;
}
else
{
cout<< "经理:"<< request<< "天,时间太长,超过公司规定"<< endl;
}
}
}; int main(int argc, char* argv[])
{
Handler* jingli = new ConcreteHandler3(NULL);
Handler* zongjian = new ConcreteHandler2(jingli);
Handler* zuzhang = new ConcreteHandler1(zongjian); zuzhang->HandleRequest();
zuzhang->HandleRequest();
zuzhang->HandleRequest();
zuzhang->HandleRequest(); delete jingli;
delete zongjian;
delete zuzhang; return ;
}
//////////////////////////////////
[root@ ~/learn_code/design_pattern/20_chain]$ ./chain
总监:批假12天
经理:批假15天
组长:批假5天
经理:31天,时间太长,超过公司规定
设计模式——职责链模式(C++实现)的更多相关文章
- 17. 星际争霸之php设计模式--职责链模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- JAVA 设计模式 职责链模式
用途 职责链模式 (Chain Of Responsibility) 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系. 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个 ...
- 深入浅出设计模式——职责链模式(Chain of Responsibility Pattern)
模式动机 职责链可以是一条直线.一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求.链上的每一个对象都是请求处理者,职责链模式可以将请求的处理者组织成一条链,并使请求沿着链传 ...
- C++设计模式——职责链模式
什么是职责链模式? 在GOF的<设计模式:可复用面向对象软件的基础>一书中对职责链模式是这样说的:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条 ...
- 设计模式:职责链模式(Chain of Responsibility)
去年参加校招要到长沙来,这个对于我来说不是特别喜欢(但又必须的来,谁叫咱不是985.211的娃呢),但是对于某些人来说就是福音了.大四还有课,而且学校抓的比较严,所以对于那些想翘课的人来说这个是最好不 ...
- C#设计模式——职责链模式(Chain Of Responsibility Pattern)
一.概述 在软件开发中,某一个对象的请求可能会被多个对象处理,但每次最多只有一个对象处理该请求,对这类问题如果显示指定请求的处理对象,那么势必会造成请求与处理的紧耦合,为了将请求与处理解耦,我们可以使 ...
- C++设计模式---职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿这条链传递该请求,直到有一个对象处理它为止. 这里发出这个请求的客户端并不知道这当中的哪一 ...
- javascript设计模式——职责链模式
前面的话 职责链模式的定义是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.职责链模式的名字非常形象,一 ...
- java设计模式---职责链模式
职责链的本质:分离职责,动态组合 样例: /** * 定义职责对象的接口 * */ public abstract class Handler { protected Handler successo ...
- 设计模式 | 职责链模式(Chain of responsibility)
定义: 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连城一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 结构:(书中图,侵删) 一个抽象的处理者 若干 ...
随机推荐
- CentOs环境下给PHP7.0安装fileinfo扩展
由于项目搭建处于一个初步阶段,由于环境的不成熟出现过一系列的问题是难免的,在关于文件操作的程序中,报出一个缺少扩展的错误,已经解决~ 看一下官方给出的说明,http://php.net/manual/ ...
- 《Android进阶之光》--Android新特性
Android 5.0新特性 1)全新的Material Design设计风格 2)支持多种设备 3)全新的通知中心设计--按照优先级显示 4)支持64位ART虚拟机 5)多任务视窗Overview ...
- STL中坑爹的max函数
hdu1754永远难忘的痛,参数最好不要传耗时特别长的函数,因为会调用两次,如果是递归的话,不知道多少次呢.. 切记!切记!切记! 例如: //return max(getAns(root<&l ...
- Hadoop序列化与Java序列化
序列化就是把内存中的对象的状态信息转换成字节序列,以便于存储(持久化)和网络传输 反序列化就是就将收到的字节序列或者是硬盘的持久化数据,转换成内存中的对象. 1.JDK的序列化 只要实现了serial ...
- js 滚动到一定位置导航定位在页面最顶部
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 小说接入UC浏览器内核技术对话(一)
质辛@灿岩 质辛跟我们说一下那个删除文件的逻辑吧质辛@灿岩 应该不是删除cache下所有文件吧?质辛@智鹰 提供一下我们的临时文件完整路径给 灿岩吧质辛@智鹰 是负责我们ucsdk的 技术对接灿 ...
- linux下自动加载设备驱动程序模块
假设你的设备驱动程序为:yourdrivername.ko 1 cp yourdrivername.ko /lib/modules/"version"/kernel/driver ...
- 让微信,qq,uc浏览器使用全屏模式,全屏模式里,浏览器是不会上下左右滑动出现背景的
<meta name="x5-fullscreen" content="true"> <meta name="full-screen ...
- pycharm short-cut
Ctrl + the left mouse button Ctrl + Alt + Left/Right if invalid, system setting
- java基础之二分法查找
package p1; import java.util.*; public class Sortdob { public static void BubbleSort(int[] arr) { ...