浅谈“观察者模式”那点小事儿

首先先了解一下什么是“观察者模式”?

所谓“观察者模式”又称“发布订阅模式”,是以一对多的形式存在的;当一个物体方生变化的时候,会通知所有物体去接受这个事件。例如:当服务端发送消息的时候,会通知所有客户端的用户都会接受到这个消息。

官方一点来说:这是一种创建松散耦合代码的技术。它定义对象间 一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体。主体并不知道观察者的任何事情,观察者知道主体并能注册事件的回调函数。

也许了解完概念,还是不知道观察者模式到底是一个什么东西,下面来举个栗子:

首先,我们先创建一个公司:公司肯定会有很多员工,所以用一个数组去存放员工们;员工们怎么来的呢?那肯定公司得去做招聘员工这件事,所以要有招聘的方法;公司每个月还得必做的一件事就是给员工们发工资啦,所以公司还需要一个发工资的方法,方法用一个循环将工资发到每个员工手上。

公司需要做的事大概就先这么多吧!

接下来,就是创建员工咯!我就创建两个员工为例吧,反正员工需要做的事都是一样的,同理可得就可以!

员工必要的属性就是姓名,所以必须给员工传递一个姓名的参数;员工去公司工作肯定也是为了emm...money啦,毕竟“钱不是万能的,但是没有钱是万万不能的呀!!没有钱就不能买零食,不能买漂漂的小裙子,不能....”停,我们还是不扯远了,所以呢,员工每个月必做的肯定就是领工资啦,所以我们要给员工一个领工资的方法。

员工也创建好了,我们就可以实际的将公司和员工们联系起来了。

我们先new一个公司的实例化对象,叫作qianfeng,作为公司肯定是需要招聘员工,我们就可以用前面创建的两个员工,把名字作为参数传进去,然后参加公司的招聘,接下来公司就做发工资的方法就可以了,员工们只需静等工资到账就ok了。

这就是整个“观察者模式”的大概流程。

我们从头再好好缕缕开头说的“观察者模式”的概念:所谓:一对多的形式在这个栗子中,就是一个公司对很多员工们的形式;当一个物体方生变化的时候,会通知所有物体去接受这个事件,在这个栗子中的体现是公司给员工们发工资,只是公司一方发生变化,而所有的员工都收到了工资。

我的分享就简单的到这里了。

若是仍不理解,推荐一位大神的博客仅供参考:http://www.cnblogs.com/nanianqiming/

原文地址:https://www.cnblogs.com/candy-xia/p/9047879.html

时间: 2024-07-28 12:56:13

浅谈“观察者模式”那点小事儿的相关文章

浅谈传统企业网络运营那些事儿

网络的变革.更新推动的速度很快,小到出门购物全方位在原基础的微信/支付宝等第三方支付等,随着微信公众号/微信小程序等"轻"级传播推广渠道的发展,以及客观的传统企业在互联网的冲击下,同样的价格比服务?比质量等问题.让网络运营这个岗位又"热"了一把,尤其是中小型企业/传统企业,对这一岗位人才的需求逐日增加. 网络运营分类 网络运营的分类也很杂,包括不限于用户运营.内容运营.数据运营.商家运营.产品运营.社区运营等等五花八门(以上在后文中简称类别运营),而现实生活中我们的

Windows Server之浅谈SMB以及SMB小案例分享

SMB由来 服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够计算机文件.打印机.串行端口和通讯等资源.它也提供经认证的进程间通信机能.它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network. SMB版本 OS W

新手码农浅谈观察者模式(java语言简单实现)

一:什么是观察者模式: 官方定义:定义对象间一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 举个例子,很多人都会订阅天气预报,当气象台获得明天的天气情况(目标对象)时,就会短信通知订阅了天气预报的人(观察者),然后订阅者就会根据明天天气情况做出相应的处理(呆在家?出去踏青?出去购物...) 二:观察者模式的两个角色: 第一个角色:目标对象(subject),被观察者关注的对象,它的改变引起观察者的改变,例如上面提到的天气情况. 第二个角色:观察者(o

浅谈centos启动那点事儿

linux系统启动首先从BIOS开始检测硬件信息=>开始启动引导程序.读取MBR(磁盘上第0磁道第一个扇区)也就是Master Boot Record 即主引导记录.MBR记录了预启动信息和分区表信息.然后将grub(作用:设定内核映象在磁盘分区的位置)信息复制到内存中.为启动内核做准备.===>加载内核.内核初始化产生一个PID为1的init进程. 由于内核运行起来是毫无用途的,需要一个系统能够定义,管理和控制init进程的行为,并负责组织和运行完成初始化的工作,从而让系统进入一个用户设定的

浅谈Vue模板的那些事儿

接触过vue的童鞋都知道,组件的模板一般都是在template选项内定义的,如 1 Vue.component('child-component', { 2 3 template: '<h3>我是闰土大叔</h3>' 4 5 }) 这个用法都是老生常谈了,今天来聊聊Vue的内联模板.看过vue文档的同学都知道,Vue提供了一个内联模板的功能,在使用组件时,给组件标签使用inline-template特性,组件就会把它的内容当做模板,而不是把它当成内容分发,这样做的好处是,让模板更灵

浅谈高大上的微信小程序中渲染html内容—技术分享

大部分Web应用的富文本内容都是以HTML字符串的形式存储的,通过HTML文档去展示HTML内容自然没有问题.但是,在微信小程序(下文简称为「小程序」)中,应当如何渲染这部分内容呢? 解决方案 wxParse 小程序刚上线那会儿,是无法直接渲染HTML内容的,于是就诞生了一个叫做「 wxParse 」的库.它的原理就是把HTML代码解析成树结构的数据,再通过小程序的模板把该数据渲染出来. rich-text 前端精品教程:百度网盘下载 后来,小程序增加了「rich-text」组件用于展示富文本内

浅谈小网站SEO的几点建设方法

现在很多小企业也开始建站,那该怎样做好小企业的seo呢? 1.通过seo树立品牌 对于小企业来说,当然不能做到像大型企业一样品牌人人皆知.但是与其他同等小企业.竞争对手相比,如果能够在搜索引擎结果中表现良好,就可以树立 良好的形象.所谓"排名第一就是品牌",在搜索引擎中排名第一就能让客户感觉到企业是一个充满活力.办事认真.积极上进的组织,客户第一面就打上了良 好的印象分.排名第一带来的客户在互联网真是数不甚数.那么如何通过seo树立品牌呢?第一,要使自己的企业名.地区行业关键字排名第一

【菜鸟学php】小菜鸟由帝国备份王在Wamp环境下打开500错误浅谈PHP程序员

===================问题情况描述=================== 小弟一直在玩discuz论坛开源程序,这个论坛程序经常涉及到论坛搬家的问题. 今天我在本地Wamp环境下,用开源软件帝国备份王2010进行数据库备份数据,结果打开发现报错500! 这真是坑爹了,回想下以前自己使用这个开源程序进行备份也不下于十几次了,大部分都正常成功, 但也不乏出现这种情况的,小弟之前一般遇到这种问题, 都是直接忽略,换其他办法来进行备份,但是用惯了帝国备份王,换其他的方法备份数据,总感觉难

浅谈c语言typedef 与结构体指针(个人小经验)

 #include<stdio.h> #include<string.h> typedef struct emp{ char sex[8]; char name[15]; int age; }*emp;//这里我们用typedef把emp这个结构体变成了*emp这种指向结构体成员的结构体指针 /*typedef struct emp{ char sex[8]; char name[15]; int age; }pi,*emp;//为了程序的可读性最好不要这样声明*/ int m