• 23种设计模式(十九)职责链模式(阁瑞钛伦特软件-九耶实训)


    常说的设计模式是23种设计模式,分为3大类:

    • 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
    • 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
    • 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。

    上次咱们说了迭代器模式,今天咱们来说“职责链模式”。

     

    “职责链模式”创建出的类结构能够让每个对象都能联系起来,形成链条并能完成各自的职责,而每个对象都是同一类型。

    创建一个抽象类:主要是有自身类型的属性,“handleReauest”抽象方法规定出实现类必须完成的职责方法。

    创建抽象类的实现类:实现“handleRequest”职责方法,此方法中调用的是父类中的本身类型属性对象的“handleRequest”职责方法。 

    应用:创建两个Handler对象,将第一个对象的属性设置为第二个对象

    调用第一个对象的职责方法,内部变执行了第二个对象的职责方法,在第二个对象的职责方法中一样可以调用下一个对象的职责方法,但是没有第三个对象的设置,所以为空,就不再执行了。

     

    职责链中的对象理论上是能形成一个闭环,第一个对象开始加载其他对象,到最后一个对象再加载第一个对象,这样形成了一个多对象的递归现象,而且是无限递归,所以通常情况下不能这样。

    设定一个场景:唐僧带着三个徒弟西天取经,有一天,唐僧打坐念经,而三个徒弟偷着喝酒,每人喝一口然后传给下一个人,当唐僧打完坐念完经后,马上就能抓住一个犯戒的徒弟,关键在于谁也不知道唐僧什么时候醒。

    我们采用两段程序:

    一段程序是职责链的闭环,让三个徒弟不断的轮流喝酒。

     

     

    另一段是唐僧不断的念经 

    当醒了后就停止上一段程序的运行,酒壶在谁身上就是谁在犯戒。

    具体代码

     

     

     

     

    唐僧打坐: 

     

     

    启动程序:

     

     

     

     

  • 相关阅读:
    宁波建筑模板厂家直销-桉木芯建筑模板
    【C++内存管理侯捷】---学习笔记(下)malloc/free,loki allocator,other issue
    C++——list
    [Common c/c++] 生产者消费者模型 using mutex/cv/semaphore
    (六)Vue之数据代理
    MMCV学习——基础篇3(fileio)| 五千字:含示例代码教程
    MongoDB的安装和配置
    Vue教程
    http在安卓9.0以上版本无法获取数据问题(备忘)
    Webpack干货系列 | 在 Webpack 5 集成 ESLint 的方法
  • 原文地址:https://blog.csdn.net/m0_69234258/article/details/126301474