让我们回到小时候,回到那我们还背着书包上学的时候吧。。。
相信,如果你看到我的文章,你一定经历过这样一些事情吧:
小时候,我们在学校读书读书的时候,每天最开心的时候就是下课,就是放学,放学之后愉快的玩耍的时光吧。
可是,我们又不得不每天早上很早就起来,然后背着书包去学校上学。不过现在想起来,还是觉得很开心的,毕竟小时候是那么的天真和简单。
今天我们讲的故事,就是我们每个上过学的同学都经历过的事情,那就是,上课铃响后要开始上课,下课铃响后,可以愉快的课间玩耍,放学后,更是开心的释放自我的玩耍。可是,当我们离开学校之后,就再也不能听到上课铃后,去上课了,,,,还有那么一丝丝感伤。
现在,我们就用大家都体会过,并且记忆深刻的经历,来讲讲这个观察者。讲真的,其他模式可以不懂,因为,你可能没有遇到过类似的场景。但是,能看我文章的人,肯定都读过书,你如果说,你不懂,真的说不过去。
观察者模式,顾名思义就是观察者相关的事情。我们小时候,回被送去读书,会在学校里面上学。到了学校之后,上课铃响了,要上课,下课铃响了,要课间休息,放学了之后,就不管响铃了,放飞自我了。
我说的这个场景,很简单对吧。观察者模式的思想,也同样这么简单。一句话解释就是,观察一个对象,如果对象发生了改变,我们可以根据这个改变做出自己的改变。
我再把上面的场景,分别列举出来。我们同一个学校的同学都是观察者,我们“注意/观察/留意”着学校的“铃声”,当不同的铃声(不一定是声音不同)响起时,我们会做不同事情。而这个“铃声”就是被我们观察的对象(被观察者/主题/变化,用你喜欢的词语就好)。
说到这里,相信有些看过“观察者模式”的同学可能会问了,观察者模式,不是还有一步是注册和反注册(订阅和取消订阅)吗?
瞧瞧,这问题问得。。。。
你到学校不就是订阅,你离开学校不就是取消订阅吗?这里也是我想说的一个重点。
不要去记住设计模式长什么样子(形式/外形),而是记住一个场景,记住一个问题。
ok,这个场景,我想你不需要费脑,就能记住吧。那么我们下面来一个测试。
就用经典的报纸为原型吧。
现在有一家报社(简单一点就一家),这家报社是全球最好的报社,很多人都会从它那里获取全球最新的资讯。每天都有很多的人去订阅这家报社,同时,由于有一些人不喜欢看咨询,也没有订阅,还有一些人看了之后觉得不好,于是就取消订阅了。现在,让你来设计这个报社的订阅程序。
要求:1.任何人都可以随时订阅/取消
2.订阅了之后,除不可抗力因素外,每一位用户都要收到最新咨询
好了,骚年,试试看吧,用代码写出来。