我理解的设计模式:观察者模式(订阅发布模式)

来源:互联网 发布:西班牙语扫描翻译软件 编辑:程序博客网 时间:2024/06/05 02:04

观察者(Observer) 模式又称 订阅-发布(Subscribe/Publish)模式。

GOF对它的定义如下:
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

我的理解是:
有 发布者, 订阅者, 订阅器三个对象。
订阅者向订阅器订阅, 发布者发送消息, 订阅器收到消息后通知对应的订阅者,
这样就实现了发布者和订阅者的解耦。

模型举例:

场景描述:游戏中, 玩家点击掉落的血瓶。

战斗时, 实例化一个订阅器。

玩家捡起血瓶这个操作, 触发了一个事件:PICK_UP_DROP_HP,战斗向订阅器发出消息。

当PICK_UP_DROP_HP被发送到订阅器时, 订阅器遍历订阅了此消息的订阅者(比如, 表现view, buff管理器等)。

被订阅器通知的订阅者收到消息后,做出对应的操作:view给屏幕上记录的数量更新, buff根据血瓶给actor加血等等。

观察者模式的具体实现应该根据实际情况出发, 一般在订阅者上多花费功夫, 发布者稍微设计下就ok。

1 0
原创粉丝点击