用职责链去实现观察者模式

我最近在想设计模式综合运用的问题。
这里我想用职责链和观察者模式结合实现一个实例
职责链
职责链:职责对象,形成一个职责链表,各个连接处理自己的职责,最终完成问题的处理。
职责链模式应该有如下几种类型
按照职责处理分类
1.职责级别分类:
请求是分级的,有最低的职责者,接受请求,能解决就解决,解决不了,像上传递。
也就是说,最终只有一个人处理问题。
2.职责均分行:一个请求,职责链的每个人都处理一点,最终把问题处理完。
也就是说,每个人都处理问题的一部分。
按照链表的形状分类。
一.直链表
1.全链表:全部链表参与执行。
2.办链表:执行到某一处处理结束。
3.分叉的链表:执行的顺序不一定是固定的。
二.环形链表,差别在于职责执行的起点不一定,结束的时候有可能是一个环形。
1.全链表:全部链表参与执行。
2.办链表:执行到某一处处理结束。
3.分叉的链表:执行的顺序不一定是固定的。
哦说远了。
观察者
一个被观察者,可以注册多个观察者,被观察者有变化,会自动的通知全部观察者。
作用就是,让这个观察的依赖自动化,让对象的使用者就想是感觉不到这个依赖一样。
因为被观察者的状态更新的同时,观察者的状态也会被自动的更新。
使用观察者的时候,就想感觉不到这个依赖是来自被观察者的状态一样。
被观察者有两点要素
1.状态自动更新,就象依赖不纯在一样。
2.解决被观察者和观察者之间一对多的关系。
实例
场景我还没有想好。
对象组成:
1.被观察者(一个,持有一个状态)
2.观察者(多个)
对象关系:
1.被观察者持有一个“头观察者”的指针
2.“观察者”,都持有另一个观察者的指针,指针关系如下
头观察者->观察扯->观察扯…观察扯->尾观察者
3.被观察者状态变化会通知给“头观察者”,“头观察者”将状态变化传递给其他观察者,一直传递到“尾观察者”。
补记
刚开始我是考虑,如果用一种模式去取代另一种模式,用来做模式对吧。
但是后来真的完成了这个实践的时候我才发现,其实职责链从结构上来讲,就是一个单链表,所以完全可以取代观察者模式的迭代。

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/88750966