常说的设计模式是23种设计模式,分为3大类:
上次咱们说了迭代器模式,今天咱们来说“职责链模式”。

“职责链模式”创建出的类结构能够让每个对象都能联系起来,形成链条并能完成各自的职责,而每个对象都是同一类型。
创建一个抽象类:主要是有自身类型的属性,“handleReauest”抽象方法规定出实现类必须完成的职责方法。

创建抽象类的实现类:实现“handleRequest”职责方法,此方法中调用的是父类中的本身类型属性对象的“handleRequest”职责方法。
应用:创建两个Handler对象,将第一个对象的属性设置为第二个对象
调用第一个对象的职责方法,内部变执行了第二个对象的职责方法,在第二个对象的职责方法中一样可以调用下一个对象的职责方法,但是没有第三个对象的设置,所以为空,就不再执行了。

职责链中的对象理论上是能形成一个闭环,第一个对象开始加载其他对象,到最后一个对象再加载第一个对象,这样形成了一个多对象的递归现象,而且是无限递归,所以通常情况下不能这样。
设定一个场景:唐僧带着三个徒弟西天取经,有一天,唐僧打坐念经,而三个徒弟偷着喝酒,每人喝一口然后传给下一个人,当唐僧打完坐念完经后,马上就能抓住一个犯戒的徒弟,关键在于谁也不知道唐僧什么时候醒。
我们采用两段程序:
一段程序是职责链的闭环,让三个徒弟不断的轮流喝酒。

另一段是唐僧不断的念经
当醒了后就停止上一段程序的运行,酒壶在谁身上就是谁在犯戒。
具体代码
唐僧打坐:
启动程序: