设计模式之13 - 责任链模式Chain Of Responsibility

news/2024/5/19 13:01:32 标签: C++, 设计模式, 责任链模式, Chain Of Responsibil

        条件判断 在编程中是应用最广的,他决定了程序的下一步应该怎么执行。我们来看下面一段代码:

// 条件判断
string strType = "";
if(age<3)
    strType = "未入学";
else if(age<6)
    strType = "幼儿园";
else if(age<12)
    strType = "小学";
else if(age<15)
    strType = "初中";
else if(age<18)
    strType = "高中";
else if(age<22)
    strType = "大学";
else if(age<25)
    strType = "研究生";
else if(age<28)
    strType = "博士";
else
    strType = "已毕业";
        再来看下 switch case 的情况:
// Switch
void divide(int i)
{
    switch(i)
    {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        ……
    }
}

        上述两种情况 都是属于 责任链的概念。

        责任链模式 将多个对象定义成一个链式结构,按照顺序对请求进行判断和处理,直到有一个对象处理他为止。

        

        这个结构非常容易理解,像代码中 经常会用到的 消息传递机制、windows窗口事件 等,都是属于责任链模式的应用。

        

        责任链模式 的优点在于实现了 请求者 和 处理者 的代码分离,发出请求的调用者 不需要知道谁处理了这个消息,只需要将请求发送出去即可,大大提高了灵活性。


http://www.niftyadmin.cn/n/904841.html

相关文章

设计模式之14 - 命令模式Command

Command是我们最常用的模式之一&#xff0c;主要用在 撤消/重做功能Undo | Redo&#xff0c;其中有代表的是二维/三维的图形操作&#xff0c;它为用户提供了必要的&#xff0c;可修改的操作接口&#xff0c;大大提高了软件的灵活性。Undo | Redo机制一般需要借助堆栈&#xff0…

设计模式之15 - 解释器模式Interpreter

1. 解释器模式&#xff08;Interpreter Pattern&#xff09;的定义 &#xff08;1&#xff09;定义 给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;并定义一个解释器&#xff0c;这个解释器使用该表示来解释语言中的句子。 ①文法&#xff1a;即语法规则。在解释…

二分法封装版

二分法的封装版&#xff1b; dichotomy(参数一,参数二) 方法 参数一&#xff1a;必填&#xff1a;需要查找的参数&#xff1b; 参数一&#xff1a;必填&#xff1a;在哪个数组中查找&#xff1b; 案例&#xff1a;   var arr[12,32,26,5,98,54,51,54,69,75,49]; dichotomy(…

三个水杯——java,广度优先搜索

题目如下&#xff1a; 21-三个水杯 内存限制:64MB 时间限制:1000ms 特判: No通过数:51 提交数:137 难度:4 题目描述: 给出三个水杯&#xff0c;大小不一&#xff0c;并且只有最大的水杯的水是装满的&#xff0c;其余两个为空杯子。三个水杯之间相互倒水&#xff0c;并且水杯没有…

设计模式之16 - 迭代器模式Itertor

1. 迭代器模式&#xff08;Iterator Pattern&#xff09;的定义 &#xff08;1&#xff09;定义&#xff1a;提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不需要暴露该对象的内部表示。 ①迭代器迭代的是具体的聚合对象&#xff08;如数组和链表等&#xff0…

31_NavLink组件包装优化

简单理解为自定义一个组件并自带样式 import React, {Component} from react import {Switch, Route, Redirect} from react-router-domimport About from ../views/about import Home from ../views/home; import MyNavLink from ./MyNavLinkexport default class App extends…

设计模式之17 - 中介者模式Mediator

觥筹交错的2016&#xff0c;看惯了帝都的繁华&#xff0c;也习惯了帝都的房价&#xff0c;隔三差五接到一个电话&#xff0c;问问是谁打来的呢&#xff1f;没错&#xff0c;中介。 这是一个伟大的职业&#xff0c;解决了数百万人的就业问题&#xff0c;当然在代码设计中也不例外…

设计模式之18 - 备忘录模式Memento

有时候我们需要记录一个对象的状态&#xff0c;用于该对象在某些状况下的恢复&#xff0c;这种模式 我们称之为 备忘录模式。 就像你录一段 婚礼视频&#xff0c;写一篇日记 是一样的&#xff0c; 备忘录模式 类结构图定义如下&#xff1a; 发起人&#xff08;Originator&#…