C++设计模式之职责链模式
2024-09-30 00:23:13
代码实现:
// chainResbonsibility.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <string>
#include <iostream>
using namespace std; class Manager
{
protected:
Manager *m_manager;
string m_name;
public:
Manager(Manager* manager,string name):m_manager(manager),m_name(name){}
virtual void DealWithRequest(string name, int num) {}
}; class CommonManager : public Manager
{
public:
CommonManager(Manager* manager,string name):Manager(manager,name){}
void DealWithRequest(string name,int num)
{
if(num < )
{
cout << "经理" <<m_name << "批准" << name << "加薪" << num << "元" <<endl;
}
else
{
cout << "经理" << m_name << "无法处理,交由总监处理" <<endl;
m_manager->DealWithRequest(name,num);
}
}
}; class Majordomo:public Manager
{
public:
Majordomo(Manager *manager,string name):Manager(manager,name){}
virtual void DealWithRequest(string name,int num)
{
if(num < )
{
cout << "总监" <<m_name << "批准" << name << "加薪" << num << "元" <<endl;
}
else
{
cout << "总监" << m_name << "无法处理,交由总经理处理" <<endl;
m_manager->DealWithRequest(name,num);
}
}
}; class GeneralManager : public Manager
{
public:
GeneralManager(Manager *manager,string name):Manager(manager,name){}
void DealWithRequest(string name,int num)
{
cout << "总经理" <<m_name << "批准" << name << "加薪" << num << "元" <<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Manager *general = new GeneralManager(NULL,"a");
Manager *majordomo = new Majordomo(general,"b");
Manager *common = new CommonManager(majordomo,"c");
common->DealWithRequest("d",);
common->DealWithRequest("d",);
common->DealWithRequest("d",);
system("pause");
return ;
}
最新文章
- gitHub使用入门和github for windows的安装教程
- quartz CronExpression表达式
- jQuery的案例及必知重要的jQuery选择器
- 关于EF6的记录Sql语句 与 EntityFramework.Extend 的诟病
- java,H5微信蓝牙设备开发教程申请设备和添加设备(2)
- 基于python编写的天气抓取程序
- Python+selenium自动化脚本编辑过程中遇到的问题和小技巧
- 【WP 8.1开发】上下文菜单
- 有关segue的简介
- 变形--扭曲 skew()
- ExtJs之addManagedListener
- spring事务传播机制实例讲解
- HashMap多线程死循环问题
- hive第二篇----hive中partition如何使用
- java游戏开发杂谈 - 界面刷新、坐标系
- MAVEN项目不扫描mybatis的mapper.xml问题
- 给网站配置免费的HTTS证书
- web前端知识大纲:系列一 js篇
- 关于setInterval的坑
- #个人博客作业Week1——浏览教材后提出的5个问题