观察者模式怎么实现

观察者模式:当一个对象状态发送改变时,会自动通知依赖它的对象。观察者模式属于行为型模式。

实现:实例化主题对象,然后观察者向主题对象注册,将注册进行遍历,让主题对象实现其接口提供的操作,即通知观察者做一些事情。

主题接口,主题,观察者接口,观察者

一个被观察者可以有多个观察者,主题就是被观察者

主题提供注册和通知的接口,观察者提供自身操作的接口。(这些观察者拥有一个同一个接口。)观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。耦合度相当之低。

观察者模式的优点:

主题和观察者是松耦合关系。主题只知道它的观察者是实现观察者某个类的实例,但并不知道是哪个类的实例,在观察者中,只知道它依赖的主题是实现主题某个类的实例,但不需要知道是哪个类的实例。

观察者模式满足开闭原则,对扩展开发,对修改关闭。当应用的需求改变时,不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。

观察者模式的缺点:

如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间

如果在被观察者之间有循环依赖的话,被观察者会触发它们之间进行循环调用,导致系统崩溃

虽然观察者模式可以随时使观察者知道所观察的对象发生了变化,但是观察者模式没有相应的机制使观察者知道所观察的对象是怎么发生变化的观察者模式使用场景:

观察者模式使用场景:

当一个对象的数据更新时需要通知其他对象,但这个对象又不希望和其他对象形成紧耦合。

当一个对象的数据更新时,这个对象需要让其他对象各自更新自己的数据,但这个对象不知道具体有多少对象更新数据。

例如微博的订阅,当我们订阅了某个人的微博账号,这个人发布了新的消息,就会通知我们,但他不知道也不需要知道要通知多少人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值