浅谈“观察者模式”那点小事儿
首先先了解一下什么是“观察者模式”?
所谓“观察者模式”又称“发布订阅模式”,是以一对多的形式存在的;当一个物体发生变化的时候,会通知所有物体去接受这个事件。例如:当服务端发送消息的时候,会通知所有客户端的用户都会接受到这个消息。
官方一点来说:
这是一种创建松散耦合代码的技术。它定义对象间 一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体。主体并不知道观察者的任何事情,观察者知道主体并能注册事件的回调函数。
了解完概念,是不是还是对“观察者模式”理解的迷迷糊糊的,下面举个例子来加深一下对“观察者模式”的理解吧...
例:
首先,我们先创建一个名为“公司”的方法;
公司里面一般都会有很多员工,所以我们用一个数组去存放“员工们”;
员工们怎么来的呢?那肯定公司得去做招聘员工这件事,所以要有“招聘”的方法;
公司每个月必做的一件事就是给员工们发工资啦,所以公司还需要一个“发工资”的方法,方法用一个循环将工资发到每个员工手上,这样确保每个员工都能拿到工资。
公司需要做的事大概就先这么多吧!
接下来,就是创建员工咯!我们就以两个员工为例吧,因为员工需要做的事都是一样的,同理可得即可!
员工必要的属性就是姓名,所以必须给员工传递一个“姓名”的参数;
员工去公司工作肯定也是为了emm...money啦,毕竟“钱不是万能的,但是没有钱是万万不能的呀!!没有钱就不能买零食,不能买漂漂的小裙子,不能....”停,我们还是不扯远了,所以呢,员工每个月必做的肯定就是“领工资”啦,所以我们要给员工一个领工资的方法。
员工也创建好了,我们就可以实际的将公司和员工们联系起来了。
我们先new一个公司的实例化对象,叫作zhaoshang吧,前面我们提到过,作为公司肯定是需要员工,我们就可以用前面创建的两个员工,把名字作为参数传进去,然后参加公司的招聘,接下来公司就做发工资的方法就可以了,员工们只需静等工资到账就ok了。
这就是整个“观察者模式”的大概流程。
总结
我们再从头来好好缕缕文章开头说的“观察者模式”的概念:
所谓:一对多的形式在这个栗子中,就是一个公司对很多员工们的形式;当一个物体方生变化的时候,会通知所有物体去接受这个事件,在这个栗子中的体现是公司给员工们发工资,只是公司一方发生变化,而所有的员工都收到了工资。
那~我的分享就简单的到这里了。
若是仍不理解,推荐一位大神的博客仅供参考:http://www.cnblogs.com/nanianqiming/