个人对于观察者模式的理解:
观察者模式:经常做架构的人应该特别清楚观察者这种设计模式,但我们中国太多的软件设计师会被四人帮铸就的经典所束缚,导致几乎所有的设计师只能按部就班,无法真正诠释最真实的设计模式。在这里我以观察者设计模式为例,想和所有人讨论一下设计模式。如有不对,请各位大神海涵。
我认为观察者模式应该分为两类:主动观察者模式和被动观察者模式。
1.主动观察者模式,就是被观察者对象主动添加观察者对象。前提是你比较明确会有哪些观察者来观察。从软件设计师的角度来看,这种观察者模式适用于观察者数量比较固定,观察者和被观察者有明确的组织关系,从某种意义角度来讲,设计师不用太需要去考虑观察着未来的可扩展性,因为需求和思考已经比较全面的分析出所存在的所有观察者,这同样是所有软件设计师软件设计师目前对于观察者模式最直接的理解。
对于这种模式的分析,我在这里就不再分析,大家应该都比较熟悉。
2.被动观察者模式,我喜欢把这种模式定义为追求者设计模式,为什么这样说,因为我觉得设计就应该以实际出发,参考现实社会来做软件设计。如果我是一位美女,我可能会知道有某些人对我有意思,但我一定不知道所有的追求者(比如暗恋者)。所以在追求者设计模式中,我们重新定义了一些属于追求者设计模式特有的名词,主要有四个,上帝(追求者注册机),闺蜜(目标泄露者),追求者,心动女生(目标)。
大家想一下,心动女生肯定是不知道所有追求者,那么谁知道?肯定是上帝,也只有上帝能够知道此刻这个男孩,这个女孩在想什么。所以上帝(追求者注册机)会不断的将追求者注册到心动女生的追求者名单中,这份名单只有上帝知道。而追求者是如何发其追求的呢?如果你喜欢的女生有男朋友,或者心情特别好的时候,她更愿意出去陪闺蜜逛街,吃饭。所以追求者的机会不会有太多。只要在她心情不好,人生收到了挫折的时候,所有追求者才会有追求的机会,而这个机会是如何得到的呢?与心动女生直接接触的肯定是她最好的朋友,或者是她的闺蜜,我想大部分追求者都会以她的闺蜜作为突破口,如果给她的闺蜜一些利益,那么她的闺蜜一定会根据心动女生一天的活动,或者与她的交流从而判断出此刻此时此刻心动女生的心情状况。如果心动女生正处于困难时期,那么闺蜜一定会及时把这一个重要的消息透露给他所知道的所有追求者们。从而追求者发起猛烈的攻击。
说了这么多,不知道大家有没有理解我要表达的意思。我概括一下,追求者模式:上帝观察世界男男女女的情绪变化,及时将追求者追测到心动女生的追求者名单,闺蜜观察心动女生的活动,从而判段心动女生的情况,泄露消息给追求者,从而追求者发动追求指令。
UML图
源码地址:http://download.csdn.net/detail/feizaizheli9203/8566793