观察者模式与事件中心

观察者模式与事件中心

观察者模式和事件中心的关系

事件中心是观察者模式的中心化类型,观察者模式比事件中心更广义,不使用事件中心,两个类,类B监听类A的事件,也是观察者模式。

为什么要用事件中心?

我觉得在Unity里最大的原因还是脚本的生命周期不适合两两的观察者模式。

写一个不用事件中心的观察者模式,类B监听类A的事件,A和B都继承MonoBehaviour,马上会发现,如果A先于B创建(需要在脚本执行顺序里设置脚本优先级),那么也会先于B销毁,B试图取消监听时,A已经销毁。

这样还算能用,假如现在A也要监听B呢??(假设A是UI,B是管理器,A收到输入通知B处理,B处理完要通知A刷新显示)任意一方先创建,它都会找不到自己要监听的对象。

那么解决方法就是搞一个生命周期比所有MonoBehaviour都长的对象。

直接调用、监听委托、事件中心,如何选用?

看要调用的函数获取到的难度,或者说调用链长度。

  1. 要执行的函数就是此函数的参数的成员方法时,直接调用。
  2. 要执行的函数只在这个类的部分对象要执行,毫不犹豫使用观察者模式。比如背包数据类,有很多对象,只有玩家那个需要触发面板刷新,那背包数据类如果引用面板还要判断自己是不是玩家的背包?
相关推荐
故渊at3 天前
系列一:架构思想进阶 | 第3篇 SOLID 原则与设计模式实战:从“代码搬运工”到“架构师”的必经之路
观察者模式·设计模式·重构·架构·代理模式
老码观察13 天前
设计模式实战解读(四):观察者模式——事件驱动的解耦利器
观察者模式·设计模式·log4j
蜡笔小马14 天前
15.C++设计模式-观察者模式
c++·观察者模式·设计模式
天若有情67318 天前
自研极简C++软交互事件系统:干掉观察者模式、碾压前端事件机制
c++·观察者模式·交互·事件
c++之路20 天前
观察者模式(Observer Pattern)
java·网络·观察者模式
++==20 天前
设计模式:单例模式和观察者模式实现方式以及优化
观察者模式·单例模式·设计模式
快乐江湖23 天前
「八卦传播者」—— 观察者模式
观察者模式
多加点辣也没关系23 天前
设计模式-观察者模式
观察者模式·设计模式
heimeiyingwang1 个月前
【架构实战】状态机架构:订单/工单状态流转设计
观察者模式·架构·wpf
heimeiyingwang1 个月前
【架构实战】观察者模式在分布式系统中的应用
观察者模式·架构·wpf