Angularjs 观察者模式 理解
观察者模式
观察者模式从字面意思就能知道它主要是做什么的,所以理解起来不难,但实际实现还是有一些难度。
观察者模式是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
观察者模式 结构
在老师教程中学到了 Angularjs
中的观察者模式,在Google
上具体了解一下
观察者模式包含四个角色:
Subject: 目标
把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)里ConcreteSubject: 具体目标
将有关状态存入具体观察者对象Observer: 观察者
为所有的ConcreteObserver定义一个接口,在得到`Subject`的通知时更新自己ConcreteObserver: 具体观察者
实现抽象观察者定义的更新接口,以便在得到主题更改通知时更新自身的状态
Google都是对Java观察者模式的解释,Angularjs的观察者模式应该与之大同小异
实现过程
不使用观察者模式,登录时不实时获取当前登录用户,必须刷新界面
使用观察者模式
代码
Services:
// 观察者self.observerCallbacks = [];// 注册观察者self.reisterObserverCallback = function(callback){self.observerCallbacks.push(callback);};// 通知观察者self.notifyObserver = function(currentLoginTeacher){angular.forEach(self.observerCallbacks, function(callback){callback(currentLoginTeacher);});};
Controller:
// 注册观察者teacher.reisterObserverCallback(function(teacher){$scope.data.CurrentLoginTeacher = teacher;});
使用时调用
self.notifyObserver
方法。只要是注册过的观察者都会得到一个通知。
时序图
优点
观察者与被观察者之间是属于轻度的关联关系,并且是抽象耦合的,这样,对于两者来说都比较容易进行扩展
总结
观察者模式:我觉得用一个词来总结,就是群发。
当一个对象发生改变的同时,需要其他对象也改变,但是并不知道具体有多少个对象改变。
Angularjs 观察者模式 理解相关推荐
- AngularJS 深入理解 $scope 转载▼
AngularJS 深入理解 $scope 转载▼ (2015-04-07 14:09:50) $scope 的使用贯穿整个 AngularJS App 应用,它与数据模型相关联,同时也是表达式执行的 ...
- AngularJs的理解
随着时代的不断进步,各种各样的开发理念与开发框架不断的提出与发展,目前来说,除了游戏,QQ,office这类软件之外,新出的一些软件应用开始出现两个方向,一个是以web为主的webApp,一个是以移动 ...
- JavaScript --- [学习笔记]观察者模式 理解对象 工厂模式 构造函数模式
说明 本系列(JS基础梳理)为后面TCP的模拟实现做准备 本篇的主要内容: 观察者模式.工厂模式.构造函数模式 和 对对象的理解 1. 观察者模式 参考JavaScript设计模式 1.1 消息注册方 ...
- PHP 观察者模式 理解
用模式开发的优点是,能让我们的逻辑结构以及代码更加清晰,便于维护! 而我们为什么要用 "观察者模式"?这就需要从实际运用中来理解才能更好的运用!用如下的情境来说明吧. 事例,开始时 ...
- Java观察者模式理解和实现
今天本想一本正经的把RxJava看一看,想着前段时间RxJava都已经到了第二版,而自己RxJava的认识还只是很基础,甚至连基础都算不上,所以本着以后能在项目里优雅地把他用出来的想法,我开始了RxJ ...
- angularJS概念理解三:控制器
在AngularJS中,实现数据绑定的核心是scope对象. 控制器让我们有机会在scope上定义我们的业务逻辑,具体说,可以使用控制器: 对scope对象进行初始化 向scope对象添加方法 在模板 ...
- Laravel orm 观察者模式理解observe
在开发中我们经常需要新增,修改...等模型操作 操作完成后需要触发个事件 以前一般的做法 <?php//例子1 $row = User::InsertGetId(['name'=>''张三 ...
- 视频教程-AngularJS基础入门视频课程-AngularJS
AngularJS基础入门视频课程 南京大学软件工程硕士,全栈开发工程师,全栈讲师. 曾就职于中软国际.擎天科技.华为等公司,擅长Java开发.Web前端.Python爬虫.PHP等领域技术.从事软件 ...
- JavaScript --- [学习笔记] 原型模式
说明 接JavaScript - > [学习笔记]观察者模式 & 理解对象 & 工厂模式 & 构造函数模式 上一篇构造函数模式创建的实例,不同实例的同一个方法是不相等的, ...
最新文章
- Hibernate 的getHibernateTemplate()方法使用
- 删除文件中指定的一行
- CALL TRANSACTION
- php在sql中添加数据,使用php在oracle数据库中插入数据
- java cpu监控,java系统监控CPU 磁盘
- win32/mfc/qt 异常处理与总结
- php $conf,$conf
- 洛谷 P1372 又是毕业季I
- 正则表达式中原子的5种类型
- stm32f072 necleo学习(一)
- VirtualLab Fusion光学仿真软件使用笔记
- 移动硬盘显示拒绝访问文件怎样找到
- 微信开发者工具提示 “当前系统代理不是安全代理,是否信任?”
- c#推箱子小游戏代码_C# 简单推箱子游戏源码
- 搜狐公司董事局主席兼首席执行官——张朝阳名言4
- 2019:自我觉醒的一年
- bmob php,Bmob 简单API使用(一)
- springcloud引言
- nginx同一个地址端口代理多个页面
- 【翻译】A Survey on Generative Diffusion Model(生成扩散模型的综述研究)