用于网站开发的语言,做国外服务器网站吗,软件开发外包哪个公司的好,漯河百度做网站电话作者#xff1a;翟天保Steven 版权声明#xff1a;著作权归作者所有#xff0c;商业转载请联系作者获得授权#xff0c;非商业转载请注明出处 一、责任链模式是什么#xff1f; 责任链模式是一种行为型的软件设计模式#xff0c;对象内存在对下家的引用#xff0c;层层连…作者翟天保Steven 版权声明著作权归作者所有商业转载请联系作者获得授权非商业转载请注明出处 一、责任链模式是什么 责任链模式是一种行为型的软件设计模式对象内存在对下家的引用层层连接形成了一条责任链请求的信息在链上传递直到某个对象决定处理该信息。 责任链模式的优点
请求者和接收者松耦合。请求者只需要发送请求不关心由谁处理怎么处理接收者只需要处理自己该处理的剩下的交给责任链上的其他职责处理。比较灵活。责任链上各个职责对象可以灵活排序或组合以应对不同场景。 责任链模式的缺点
性能易受影响。当责任链过长时对请求的处理效率不够高。不一定确保请求完整处理。每个职责只对自身部分负责有可能请求走完整个责任链也没有完全处理。 二、责任链模式
2.1 结构图 客户端即Main主函数操作者中有自己的下家下家也是操作者。 2.2 代码示例 场景描述申请批假。
//Handler.h
/****************************************************/
#pragma once
#include iostreamusing namespace std;// 抽象操作者-职位
class Job
{
public:// 批准假期virtual void approveLeave(int time) 0;// 设置领导void setLeader(Job* handler) {m_leader handler;}protected:Job* m_leader nullptr;
};// 具体操作者-主管
class Manager : public Job
{
public:// 批准假期virtual void approveLeave(int time) {if (time 3) {cout 主管正在处理批假申请。 endl;}else if (m_leader ! nullptr) {m_leader-approveLeave(time);}else {cout 未有合适领导批准该时长的假期申请。 endl;}}};// 具体操作者-总监
class Director : public Job
{
public:// 批准假期virtual void approveLeave(int time) {if (time 7) {cout 总监正在处理批假申请。 endl;}else if (m_leader ! nullptr) {m_leader-approveLeave(time);}else {cout 未有合适领导批准该时长的假期申请。 endl;}}};
//main.cpp
/****************************************************/
#include iostream
#include string
#include Handler.husing namespace std;int main()
{Job* job1 new Manager();Job* job2 new Director();// 设置领导job1-setLeader(job2);// 收到了三份批假申请分别3、7、10天job1-approveLeave(3);job1-approveLeave(7);job1-approveLeave(10);delete job1;delete job2;job1 nullptr;job2 nullptr;return 0;
} 程序结果如下。 job中设置的领导其实就是它的下家当它无法对当前请求进行处理时交给下家也就是领导来处理。3天假期主管就可以批准了7天需要由总监批准10天则需要更大的领导批准因为暂时没设置能处理7天以上批假的领导所以对该请求需要做一个未处理成功的说明。 三、总结 我尽可能用较通俗的话语和直观的代码例程来表述我对责任链模式的理解或许有考虑不周到的地方如果你有不同看法欢迎评论区交流希望我举的例子能帮助你更好地理解责任链模式。 如果文章帮助到你了可以点个赞让我知道我会很快乐~加油