ZBLOG

class AbstractHero{//抽象的英雄,抽象的观察者 public: virtual void Update() =0; }; class HeroA :public AbstractHero{//具体的英雄,具体的观察者 public: HeroA(){ std::cout

这段代码实现了一个简单的观察者模式示例,其中包含了抽象英雄(AbstractHero)、具体英雄(HeroA、HeroB)以及抽象BOSS(AbstractBoss)和具体BOSS(BOSSA)等类。

在这个示例中,抽象英雄(AbstractHero)是观察者的抽象类,定义了一个纯虚函数 Update(),用于接收更新通知。

具体英雄(HeroA、HeroB)是具体的观察者类,实现了 Update() 函数。它们表示不同的英雄角色,并在构造函数中输出一些信息来表示当前状态。

抽象BOSS(AbstractBoss)是观察目标的抽象类,定义了添加、删除观察者以及通知观察者的纯虚函数。

具体BOSS(BOSSA)继承自抽象BOSS,实现了添加、删除和通知操作。它内部维护了一个存储 AbstractHero 指针的列表 pHeroList。当调用 notifv() 函数时,遍历 pHeroList 列表并依次调用每个英雄对象的 Update() 函数。

最后部分是声明和定义 BOSSA 类中使用到的 pHeroList 列表。

整个代码示例展示了当 BOSSA 的状态发生变化时,会通知所有关注它的英雄对象停止攻击并进入待机状态。这符合观察者模式的核心思想,即一个对象状态的变化会影响其他相关对象。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=12685

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?