当前位置: 首页 > news >正文

网上快速学做网站东莞网站建设制作

网上快速学做网站,东莞网站建设制作,新余做网站的公司,wordpress 查看大图责任链模式定义 C中的责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它通过将请求沿着处理对象的链传递来避免把请求发送者与接收者耦合在一起。 责任链模式的主要思想是,通过将多个处理对象组成一条链&…

责任链模式定义

C++中的责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它通过将请求沿着处理对象的链传递来避免把请求发送者与接收者耦合在一起。
责任链模式的主要思想是,通过将多个处理对象组成一条链,每个处理对象都有机会处理请求。如果某个对象不能处理请求,则将请求传递给下一个对象依次处理,直到请求被处理为止。
责任链模式通常涉及以下几个角色:
1.请求(request):封装了需要进行处理的信息,以便于在责任链上传递。
2.抽象处理者(Handler):定义了处理请求的接口,并维护一个指向下一个处理者的引用,以便于在责任链中传递请求。
3.具体处理者(Concrete Handler):实现了处理请求的方法,并检查是否有足够的权限或能力来处理请求。如果可以处理请求,则进行处理并返回结果;否则将请求传递给下一个处理者。
使用责任链模式的主要目的是让不同的处理对象负责不同的处理逻辑,并将这些对象串成一条链。这样一来,我们可以动态地改变请求的处理顺序或重新配置责任链,而不影响客户端代码。

实例代码

OA系统实例,分别有普通员工,主管,CEO,boss,处理的请求有请假,涨薪, 辞职;普通员工提交请求,主管可以批准请假,CEO可以批准请假,涨薪,boss可以批准请假,涨薪,辞职。
主管处理不了的递交给CEO,CEO处理不了的递交给boss。

#include <iostream>
using namespace std;enum class RequestType :char {qingjia,zhangxin,cizhi};
//抽象管理者类,manager,ceo,boss都继承这个类
class AbstractManager
{
public:void setNext(AbstractManager* next) //指向下一个管理者{m_next = next;}virtual void  handleRequest(RequestType type) = 0; //每个管理者都要重写这个处理请求的函数virtual ~AbstractManager() {}
protected:AbstractManager* m_next = nullptr; //子类可以继承
};//manager主管
class Manager : public AbstractManager
{
public:void  handleRequest(RequestType type)  //每个管理者都要重写这个处理请求的函数{switch (type){case RequestType::qingjia:cout << "请假:同意" << endl;break;case RequestType::zhangxin:cout << "涨薪:我要请示CEO" << endl;m_next->handleRequest(type); //m_next是下个界别的对象指针break;case RequestType::cizhi:cout << "辞职:我要请示上级" << endl;m_next->handleRequest(type); //m_next是下个界别的对象指针break;default:break;}}
};//CEO
class CEO : public AbstractManager
{
public:void  handleRequest(RequestType type)  //每个管理者都要重写这个处理请求的函数{switch (type){case RequestType::qingjia:cout << "请假:同意" << endl;break;case RequestType::zhangxin:cout << "再等等吧" << endl;break;case RequestType::cizhi:cout << "辞职:我要请示上级" << endl;m_next->handleRequest(type); //m_next是下个界别的对象指针break;default:break;}}
};//boss
class BOSS : public AbstractManager
{
public:void  handleRequest(RequestType type)  //每个管理者都要重写这个处理请求的函数{switch (type){case RequestType::qingjia:cout << "请假:再忍忍吧" << endl;break;case RequestType::zhangxin:cout << "再等等吧" << endl;break;case RequestType::cizhi:cout << "辞职:再缓一缓吧" << endl;break;default:break;}}
};//请假人的类
class YG
{
public:void request(RequestType type, AbstractManager* manager){manager->handleRequest(type);}
};int main()
{Manager* manager = new Manager;CEO* ceo = new CEO;BOSS* boss = new BOSS;manager->setNext(ceo);ceo->setNext(boss);YG* yg = new YG;yg->request(RequestType::qingjia, manager);yg->request(RequestType::zhangxin, manager);yg->request(RequestType::cizhi, manager);yg->request(RequestType::qingjia, ceo);yg->request(RequestType::zhangxin, ceo);yg->request(RequestType::cizhi, ceo);yg->request(RequestType::qingjia, boss);yg->request(RequestType::zhangxin, boss);yg->request(RequestType::cizhi, boss);return 0;}
http://www.hkea.cn/news/14114/

相关文章:

  • 网站建设如何做报价百度销售平台怎样联系
  • 聊城专业网站建设公司西安seo按天收费
  • 全球网购平台排名前十seo类目链接优化
  • 青岛网站建设保山seo怎么优化软件
  • 菜户营做网站宁波seo整体优化公司
  • python网站开发的毕业论文营销技巧第三季
  • 平泉建设局网站北京优化网站公司
  • 什么网站有做面条的app本地服务推广平台哪个好
  • 微信接口开发平台如何优化企业网站
  • 江苏网站备案要多久cilimao磁力猫在线搜索
  • 做app找哪个网站互联网营销师怎么考
  • 二级域名做网站域名app推广软文范文
  • 网站建设要域名和什么科目百度新闻最新消息
  • 河北保定网站建设发布软文广告
  • 企业网络营销分析报告江苏seo外包
  • 太湖县城乡建设局网站近三年成功的营销案例
  • 网站做压力测试 环境正规电商平台有哪些
  • 做咨询类网站风险评估5118站长工具箱
  • 做网站产品图片素材关键词优化公司哪家强
  • 青山做网站独立站建站平台
  • 网站排名优化平台seo优化价格
  • 广州视频网站建站公司长沙今日头条新闻
  • 犀牛云做网站编辑上传抖音视频排名优化
  • 深圳哪里有做网站的公司网页设计代码大全
  • 网站维护一年多少费免费域名解析
  • 上海 .net网站建设seo搜索引擎优化课程总结
  • 如何建设网站app友情链接网址
  • wordpress时间云储存有利于seo优化的是
  • 设计网站推荐素材网站网站seo推广平台
  • 服务专业的网站建设服务快速网站