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

四平网站建设营销常州企业自助建站系统

四平网站建设营销,常州企业自助建站系统,wordpress 页面模板插件,网站风格设定【声明】本题目来源于卡码网#xff08;卡码网KamaCoder#xff09; 【提示#xff1a;如果不想看文字介绍#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是责任链模式#xff08;第21种设计模式#xff09; 责任链模式是⼀种行为型设计模式卡码网KamaCoder 【提示如果不想看文字介绍可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是责任链模式第21种设计模式 责任链模式是⼀种行为型设计模式它允许你构建⼀个对象链让请求从链的⼀端进⼊然后沿着链上的对象依次处理直到链上的某个对象能够处理该请求为止。 职责链上的处理者就是⼀个对象可以对请求进⾏处理或者将请求转发给下⼀个节点这个场景在⽣活中很常⻅就是⼀个逐层向上递交的过程最终的请求要么被处理者所处理要么处理不了这也因此可能导致请求⽆法被处理。 【组成结构】 责任链模式包括以下几个基本结构 1. 处理者Handler 定义⼀个处理请求的接⼝包含⼀个处理请求的抽象⽅法和⼀个指向下⼀个处理者的链接。2. 具体处理者ConcreteHandler : 实现处理请求的⽅法并判断能否处理请求如果能够处理请求则进⾏处理否则将请求传递给下⼀个处理者。3. 客户端创建并组装处理者对象链并将请求发送到链上的第⼀个处理者。 【简易实现 - Java】 以Java代码作以简要说明 1. 处理者 定义处理请求的接口 interface Handler {// 处理请求的⽅法void handleRequest(double amount);// 设置下⼀个处理者的⽅法void setNextHandler(Handler nextHandler); } 2. 具体处理者 实现处理请求 class ConcreteHandler implements Handler {private Handler nextHandler;Overridepublic void handleRequest(Request request) {// 根据具体情况处理请求如果⽆法处理则交给下⼀个处理者if (canHandle(request)) {// 处理请求的逻辑} else if (nextHandler ! null) {// 交给下⼀个处理者处理nextHandler.handleRequest(request);} else {// ⽆法处理请求的逻辑}}Overridepublic void setNextHandler(Handler nextHandler) {this.nextHandler nextHandler;}// 具体处理者⾃⼰的判断条件private boolean canHandle(Request request) {// 根据具体情况判断是否能够处理请求return /* 判断条件 */;} } 3. 客户端 创建并组装处理者对象链将请求发送给链上第⼀个处理者 public class Main {public static void main(String[] args) {// 创建处理者实例Handler handler1 new ConcreteHandler();Handler handler2 new ConcreteHandler();// ...// 构建责任链handler1.setNextHandler(handler2);// ...// 发送请求Request request new Request(/* 请求参数 */);handler1.handleRequest(request);} } 【使用场景】 责任链模式具有下⾯⼏个优点 降低耦合度将请求的发送者和接收者解耦每个具体处理者都只负责处理与⾃⼰相关的请求客户端不需要知道具体是哪个处理者处理请求。增强灵活性可以动态地添加或删除处理者改变处理者之间的顺序以满⾜不同需求。 但是由于⼀个请求可能会经过多个处理者这可能会导致⼀些性能问题并且如果整个链上也没有合适的处理者来处理请求就会导致请求⽆法被处理。         责任链模式是设计模式中简单且常⻅的设计模式在⽇常中也会经常使⽤到⽐如Java开发中过滤器的链式处理以及Spring框架中的拦截器都组装成⼀个处理链对请求、响应进⾏处理。 【C编码部分】 1. 题目描述 小明所在的公司请假需要在OA系统上发布申请整个请求流程包括多个处理者每个处理者负责处理不同范围的请假天数如果一个处理者不能处理请求就会将请求传递给下一个处理者请你实现责任链模式可以根据请求天数找到对应的处理者。 审批责任链由主管(Supervisor), 经理(Manager)和董事Director)组成他们分别能够处理3天、7天和10天的请假天数。如果超过10天则进行否决。 2. 输入描述 第一行是一个整数N1 N 100) 表示请求申请的数量。接下来的N行每行包括一个请求申请的信息格式为姓名 请假天数。 3. 输出描述 对于每个请假请求输出一行表示该请求是否被批准。如果被批准/否决输出被哪一个职级的人批准/否决。 4. C编程示例可直接运行 /** * version Copyright (c) 2024 NCDC, Servo。 Unpublished - All rights reserved * file DutyChainMode.hpp * brief 责任链模式 * autor 写代码的小恐龙er * date 2024/01/25 */#include iostream #include stringusing namespace std;// 前置声明// 用户请求类 class LeaveRequest;// 处理者 接口类 class LeaveHandler; // 具体处理者1 -- 主管(Supervisor) 3 class Supervisor; // 具体处理者2 -- 经理(Manager) 7 class Manager; // 具体处理者3 -- 董事Director) 10 class Director;// 具体定义// 用户请求类 class LeaveRequest { //成员数据 private:string _name;int _daysLeave 0; // 成员函数 public://构造函数LeaveRequest(string name, int days){this-_name name;this-_daysLeave days;}// 成员数据获取接口string GetName(){return this-_name;}int GetDaysLeave(){return this-_daysLeave;} };// 处理者 接口类 class LeaveHandler { // 接口 public:virtual void HandleRequest(LeaveRequest *request) 0; };// 具体处理者1 -- 主管(Supervisor) 3 class Supervisor : public LeaveHandler { //成员数据 private:const int _maxDays 3;// 下一个处理者LeaveHandler *_nextHandler; // 接口函数重载 public:// 构造函数Supervisor(){}Supervisor(LeaveHandler *nextHandler){this-_nextHandler nextHandler;}void HandleRequest(LeaveRequest *request) override {if(request){if(request-GetDaysLeave() _maxDays){std::cout request-GetName() Approved by Supervisor. endl;}else if(_nextHandler){_nextHandler-HandleRequest(request);}else std::cout request-GetName() Denied by Supervisor. endl;}} };// 具体处理者2 -- 经理(Manager) 7 class Manager : public LeaveHandler { //成员数据 private:const int _maxDays 7;// 下一个处理者LeaveHandler *_nextHandler; // 接口函数重载 public:// 构造函数Manager(){}Manager(LeaveHandler *nextHandler){this-_nextHandler nextHandler;}void HandleRequest(LeaveRequest *request) override {if(request){if(request-GetDaysLeave() _maxDays){std::cout request-GetName() Approved by Manager. endl;}else if(_nextHandler){_nextHandler-HandleRequest(request);}else std::cout request-GetName() Denied by Manager. endl;}} };// 具体处理者3 -- 董事Director) 10 class Director : public LeaveHandler { //成员数据 private:const int _maxDays 10;// 下一个处理者const LeaveHandler *_nextHandler nullptr; // 接口函数重载 public:// 构造函数Director(){}// Director(LeaveHandler *nextHandler){// this-_nextHandler nextHandler;// }void HandleRequest(LeaveRequest *request) override {if(request){if(request-GetDaysLeave() _maxDays){std::cout request-GetName() Approved by Director. endl;}// else if(_nextHandler){// _nextHandler-HandleRequest(request);// }else std::cout request-GetName() Denied by Director. endl;}} };int main() {// 请求数量int requestNum 0;std::cin requestNum;// 创建请求命令基类LeaveRequest *request nullptr;// 创建处理者基类 -- 【创建处理流程时 也可单独创建一个类】LeaveHandler *director new Director();LeaveHandler *manager new Manager(director);LeaveHandler *supervisor new Supervisor(manager);// 遍历for(int i 0; i requestNum; i){// 请假者姓名 和 天数string name ;int days 0;// 输入std::cin name days;// 新建请求类request new LeaveRequest(name, days);// 开始处理请求supervisor-HandleRequest(request);}//析构delete director;director nullptr;delete manager;manager nullptr;delete supervisor;supervisor nullptr;if(request ! nullptr){delete request;request nullptr;}return 0; }...... To be continued.
http://www.zqtcl.cn/news/773464/

相关文章:

  • 做电影网站需要的服务器配置网站关键词排名优化应该怎么做
  • 企业网站管理关键词你们懂的
  • 成都成华网站建设跟网站开发公司签合同主要要点
  • 手机搭建平台网站化工厂建设网站
  • 怎样建设自己网站的后台龙港哪里有做百度网站的
  • 西安做网站建设哪家好2345网址导航电脑版下载
  • 做暧暧小视频网站十大职业资格培训机构
  • 泰安网站建设优化营销策划是做什么
  • 做网站百度排前位网页设计实训报告2000字
  • 网站建设的活动方案房地产销售渠道拓客方案
  • 哈尔滨网站提升排名版式设计图片
  • 我的专业网站建设策划书网站logo教程
  • 百度 网站 移动端win10系统之家官网
  • h5商城网站建站成都网站建设全平台
  • xuzhou公司网站制作有什么手机网站
  • 网站建设 培训深圳网站建设制作品牌公司
  • 网站到期怎么续费网站运营优化推广
  • 一站式装修的利弊上海建设厅焊工证查询网站
  • 济宁做网站公司找融合深圳招聘一般在哪个网站
  • 重庆建网站推广公司个人网站需要建站群吗
  • 深圳网站建设吗个人博客网站制作代码
  • 化妆品网站模板网络营销的网站分类有哪些
  • 广州网站建设程序员培训wordpress 微信 抓取
  • 毕设给学校做网站个人店铺logo
  • 中国做w7的网站宿迁网站建设价位
  • 网站建设售后服务合同百度关键词排名点击器
  • 编辑网站用什么软件推广是什么
  • 北京模板开发建站做网站赚钱的点在哪里
  • 网站建设价格兴田德润i网址多少wordpress主题汉化是什么意思
  • 用最少的钱做网站根据域名查询网站名称