您的位置:首页 > 文旅 > 旅游 > 女生冷门又高薪的职业_seo兼职招聘信息_怎么开发自己的小程序_企业管理培训班哪个好

女生冷门又高薪的职业_seo兼职招聘信息_怎么开发自己的小程序_企业管理培训班哪个好

2024/10/9 18:39:20 来源:https://blog.csdn.net/weixin_68122199/article/details/142756857  浏览:    关键词:女生冷门又高薪的职业_seo兼职招聘信息_怎么开发自己的小程序_企业管理培训班哪个好
女生冷门又高薪的职业_seo兼职招聘信息_怎么开发自己的小程序_企业管理培训班哪个好

此为设计模式谈!

总-分-总的结构生活化的例子给你讲解设计模式!

码农不易,各位学者学到东西请点赞收藏支持支持!

开始部分:

总:责任链的本质是使多个对象都有机会处理请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

分:

1.老规矩,打开VS创建一个控制台程序

2.实现编码,这里用学生在学校请假的例子来辅助理解

2.1 抽象处理者,设置下一个节点和获取下一个节点

2.2 具体处理者,实现处理逻辑

2.3 用链表结构来组装责任链

#include <iostream>
using namespace std;// 抽象处理者:领导者类
class Leader {
public:void SetNext(Leader* next) {this->mnext = next;}Leader* GetNext()const {return mnext;}virtual ~Leader() {}// 处理请求方法virtual void HandlerRequest(int days) = 0;private:Leader* mnext;
};// 具体处理者1:班主任
class headmaster :public Leader {
public:void HandlerRequest(int days)override {if (days <= 3){cout << "\n班主任已经批准你请假:" << days << "天。" << endl;}else{if (GetNext() != nullptr){GetNext()->HandlerRequest(days);}else{cout << "\n你请假的天数太多,没有人能够批准你请假。" << endl;}}}
};// 具体处理者2:系主任
class departmentHead :public Leader {
public:void HandlerRequest(int days)override {if (days <= 10){cout << "\n系主任已经批准你请假:" << days << "天。" << endl;}else{if (GetNext() != nullptr){GetNext()->HandlerRequest(days);}else{cout << "\n你请假的天数太多,没有人能够批准你请假。" << endl;}}}
};// 具体处理者3:校长
class principal :public Leader {
public:void HandlerRequest(int days)override {if (days <= 30){cout << "\n校长已经批准你请假:" << days << "天。" << endl;}else{if (GetNext() != nullptr){GetNext()->HandlerRequest(days);}else{cout << "\n你请假的天数太多,没有人能够批准你请假。" << endl;}}}
};int main()
{// 组装责任链Leader* t1 = new headmaster();Leader* t2 = new departmentHead();Leader* t3 = new principal();t1->SetNext(t2);t2->SetNext(t3);// 提交请假请求天数dayint day = 0;cout << "\n\n请输入请假天数:";while (cin >> day){t1->HandlerRequest(day);}delete t1;t1 = nullptr;delete t2;t2 = nullptr;delete t3;t3 = nullptr;    return 0;
}

总:责任链模式的优点:增加新的请求处理类非常方便;

缺点:不能保证你的请求一定被接收。(没有一个类能处理这个请求)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com