c++之职责链模式
发布日期:2021-09-25 21:40:59
浏览次数:2
分类:技术文章
本文共 1221 字,大约阅读时间需要 4 分钟。
职责链模式
定义:使得多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着该链传递该请求,直到有一个对象处理它为止。
属于行为型模式。
代码:
#includeusing namespace std;class Handle{public: void setHandle(Handle *h) { m_handle = h; } virtual void handleRequest(int score) = 0; Handle *m_handle;};class ConcreteHandleA :public Handle{public: void handleRequest(int score) { if (score < 60) { cout << score << " 不及格,调入普通班级" << endl; } else { if (m_handle) m_handle->handleRequest(score); } }};class ConcreteHandleB :public Handle{public: void handleRequest(int score) { if (score >= 60 && score<80) { cout << score << " 及格,调入良好班级" << endl; } else { if (m_handle) m_handle->handleRequest(score); } }};class ConcreteHandleC :public Handle{public: void handleRequest(int score) { if (score >= 90) { cout << score << " 优秀,调入尖子班" << endl; } }};//客户端int main(){ ConcreteHandleA *a = new ConcreteHandleA; ConcreteHandleB *b = new ConcreteHandleB; ConcreteHandleC *c = new ConcreteHandleC; a->setHandle(b); b->setHandle(c); int stuScore[] = { 30, 10, 80, 90, 99, 75, 49 }; for (int x : stuScore) { a->handleRequest(x); } if (a) { delete a; a = nullptr; } if (b) { delete b; b = nullptr; } if (c) { delete c; c = nullptr; }}
效果:
转载地址:https://blog.csdn.net/c_shell_python/article/details/107563945 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月08日 10时37分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
matlab连续读取多幅图像
2019-04-27
关于matlab中的kmeans和reshape函数
2019-04-27
matlab的regionprops详解
2019-04-27
欲速则不达
2019-04-27
有关矩阵低秩近似的一个不等式
2019-04-27
visio插入公式另存为出现斜方框
2019-04-27
Fast Randomized SVD
2019-04-27
最大连续子序列
2019-04-27
what are textons?
2019-04-27
数据归一化与z-score标准化
2019-04-27
取消a标签的默认跳转行为
2019-04-27
js中检测用户点击确认还是取消
2019-04-27
for循环执行的速度快于其内部的点击响应函数
2019-04-27
通过JS修改元素样式
2019-04-27
JS中样式函数汇总
2019-04-27
JavaScript—事件函数
2019-04-27
JavaScript中call方法详解
2019-04-27
现代密码学复习——第一章
2019-04-27