设计模式-观察者模式与发布订阅模式

一、发布与订阅模式

通常都有一个调度中心管理。订阅者会使用事件名称进行注册。发布者在发布消息的时候,主要是根据事件名称进行发布,并不关心谁注册了该事件。所以该模式实现了发布与订阅之间彻底的解耦。

重点:有一个根据事件名称进行管理的调度中心。

根据上图可知,一般该模型的数据存储使用 Map或Dictionary。即键值<key,value>对形式存储, key 是事件名,value 是列表(数组)。可直接根据key值获取到value值,不需要进行查找。同时该模型,一般都是单例模式(具体根据实际业务来确定,确保事件的统一管理)。

二、观察者模式

只有观察者和被观察者,消息类型单一,只要加入了被观察者中,被观察者一旦发生变化,所有的观察者都会接到消息事件。该模式没有事件名称一说,更不会根据事件名称进行发布事件。

 如上图,观察者会被加入被观察者中,可以加入观察者类的实例或加入观察者类中的某方法到被观察者中,被观察者类会进行存储这些数据。数据的存储形式一般使用List或Array等数组格式存储起来。当被观察者中的状态发生改变时,会进行遍历该数组,进行发布事件。

三、两种模式的常用方法与取名:

  1. 添加:常用 on、add、regist  等开头
  2. 删除:常用  off、 remove、delete  等开头
  3. 发布:常用  emit、trigger、publish、notify 等开头

这两种模型的最终目的是解决脚本(类)之间的通信问题,同时实现脚本(类)之间的解耦。发布与订阅模式解耦更加彻底。观察者模式属于松耦合。具体使用根据实际的业务类型而定。

实践:设计模式-发布订阅模式(typescript版本)_typescript 发布订阅-CSDN博客

实践Unity:设计模式-发布与订阅(Unity版本)_unity订阅者模式-CSDN博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值