观察者模式

观察者模式

定义

Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并且自动更新;

分析

观察者模式是一个在项目中常用的模式,也叫作发布-订阅模式;

观察者模式实际上对建立触发机制的一种指导模式。比如,在森林中发出一声枪响,则兔子会藏到洞里,松鼠则会爬山树等。开枪的人不需要通知兔子或者松鼠,只需要发布“枪响”这一事件即可。当然,兔子和松鼠首先要关心“枪响”这一事件,即首先订阅这一事件;

观察者模式中需要控制的是响应时间以及广播链的复杂程度;

所谓响应时间是指所有订阅者对事件的响应时间,如果时间过长,那么肯定会影响发布者所在系统的性能;此时可以使用异步编程的方法;

广播链复杂程度是指,订阅者本身也是发布者,这样就相当于A发布事件E1,之后B做出对E1的响应,但是该响应作为E2,又得到了C的响应。如此一来,系统的交互就会变得很复杂,应当通过巧妙的设计避免事件的多次转发;

实现

观察者模式

体现的面向对象程序设计原则

单一职责原则:Subject与Observer各司其职,Subject并没有直接调用Observer的方法,而是调用统一的update方法;

依赖倒置原则:这体现在Observer的设计上;

里氏替换原则:并无体现;

接口隔离原则:并无体现;

迪米特原则:Observer将event的响应封装在update函数里,使得Subject无需指导Observer采取行动;

开闭原则:很明显,Subject和Observer都是极易扩展的;

关注个人微信公众号:落花流水存心阁,不仅能免费获得相关项目的源码,还可以扩展思维,启迪智慧哦~
落花流水存心阁
后台回复:设计模式。获得项目源码~(如果从聚宝盆里获得资源后便狠心离去,那么聚宝盆将因难过而沉睡过去,无法为您提供宝贝了。。。除非唤醒它!)

如果觉得文章写的不错,也可以小小地打赏一下嘛~
也期待合作,“码”上改变~

微信账号支付宝账号
在这里插入图片描述在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值