设计模式之观察者模式

情景引入

在王者荣耀中,己方英雄丢了个AOE技能,技能范围内的敌方单位都要收到伤害 —— 如敌方英雄,小兵,野怪等

不同的敌方单位抗性不同,受到的伤害也不一样,因此不能一概而论

此类场景属于一对多的依赖关系,当一个对象发生变化(AOE技能),其他的对象都要得到通知并更新(伤害计算),因此使用观察者模式是比较恰当的

观察者模式定义

观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己

上面的己方英雄就是主题,而敌方单位则是观察者(订阅者)

代码实现(Python)

观察者模式代码

运行截图

运行截图

 

可以看到,主题和观察者分别是两个类

开始的时候,观察者通过attach订阅主题,后面主题通过notify调用观察者的update方法,从而使观察者的状态得到更新

 

评论或私信站长


  1. #该文章暂时没有评论