当前位置: 首页 > news >正文

网站后台编辑器不显示西宁市营销网站建设公司

网站后台编辑器不显示,西宁市营销网站建设公司,自己的网站到期域名如何续费,微小店网站建设哪家好运行在VS2022,x86,Debug下。 31. 中介者模式 中介者模式允许对象之间通过一个中介者对象进行交互,而不是直接相互引用。可以减少对象之间的直接耦合,同时集中化管理复杂的交互。应用:如在游戏开发中,可以使…

运行在VS2022,x86,Debug下。

31. 中介者模式

在这里插入图片描述

  • 中介者模式允许对象之间通过一个中介者对象进行交互,而不是直接相互引用。可以减少对象之间的直接耦合,同时集中化管理复杂的交互。
  • 应用:如在游戏开发中,可以使用中介者模式来管理游戏对象之间的碰撞检测。这意味着当一个游戏对象需要检测与其他对象的碰撞时,它不需要直接与其他所有游戏对象进行交互,而是通过中介者来进行交互。
  • 实现
    • 同事接口,定义中介者对象,用来调用中介者的接口。
    • 具体同事类。
    • 中介者接口,定义让同事类操作的接口。
    • 具体中介者,定义所有同事类对象,负责同事类对象之间的交互。
  • 代码如下。
class GameMediator;//同事类:游戏对象类
class GameObject 
{
protected:GameMediator* gameMediator;string objectName;public:GameObject(GameMediator* mediator,const string& name): gameMediator(mediator), objectName(name){}string getName() const { return objectName; }virtual void HandleCollision(GameObject* other) = 0; //处理碰撞
};//中介者:游戏中介类
class GameMediator
{
public:virtual void notify(const string& event, void* data) = 0; //事件通知
};//具体同事类:玩家类
class Player : public GameObject
{
public:Player(GameMediator* mediator, const string& name) : GameObject(mediator,name) {}void jump() {cout << getName() << " is jumping!" << endl;gameMediator->notify("collision", this); //由中介者调用碰撞检测函数}void HandleCollision(GameObject* other){cout << getName() << " took damage and collided with " << other->getName() << endl;}
};//具体同事类:障碍物类
class Obstacle : public GameObject 
{
public:Obstacle(GameMediator* mediator, const string& name) : GameObject(mediator, name) {}void movement(){cout << getName() << " is moving!" << endl;gameMediator->notify("collision", this); //由中介者调用碰撞检测函数}void HandleCollision(GameObject* other){cout << getName() << " collided with " << other->getName() << endl;}
};// 具体中介者: 游戏引擎类
class GameEngine : public GameMediator
{
public:void notify(const string& event, void* data) //根据事件通知相关的子系统{if (event == "collision") {CheckCollision(static_cast<GameObject*>(data));}//...}void setGameObjects(const vector<GameObject*>& objects) { gameObjects = objects;}private:vector<GameObject*> gameObjects;void CheckCollision(GameObject* source) const{//检测与所有游戏对象之间的碰撞for (auto&& target : gameObjects) {if (source != target){//如果发生碰撞,由游戏对象调用处理碰撞函数source->HandleCollision(target);}}}
};int main()
{//创建中介者GameEngine GEmediator;//创建各游戏对象Player player(&GEmediator, "Player");Obstacle Crates(&GEmediator, "Crates");Obstacle Trees(&GEmediator,"Trees");Obstacle Cars(&GEmediator, "Cars");//中介者管理所有游戏对象, 负责所有游戏对象之间的交互GEmediator.setGameObjects({ &player, &Crates, &Trees, &Cars });//游戏对象移动player.jump();Cars.movement();return 0;
}
http://www.yayakq.cn/news/617767/

相关文章:

  • 做传感器的网站免费一百个空间访客领取网站
  • 网站建设实训实训心得怎样做二维码链接到网站上
  • 凡客诚品失败的主要原因宁波seo关键词培训
  • 哈尔滨微信网站建设安卓网站开发前景
  • 快速搭建网站的软件没有备案的网站怎么做淘宝客
  • 上海哪家公司做网站uc信息流广告投放
  • 苏州高端网站建设设计手机端原神
  • 做的好的阅读类的网站有哪些中国肩章军衔图解
  • 苏州市建设局投诉网站360网站做二维码
  • 网站改版iis301跳转如何做什么是优化资源配置
  • 小吃店网站建设湖南省政务服务网 网站建设要求
  • 摄影作品可以在哪些网站投稿重庆设计网站建设
  • 各网站的网络联盟wordpress小米路由器3
  • 临沂seo网站推广做公众号封面的网站
  • 商标做网站logo网站安排
  • 网站建设与管理培训总结织梦学校网站源码
  • 天津市做网站的公司农业网站源码带数据
  • 怎么做免费的网站wordpress 评论界面
  • 医疗网站优化怎么做wordpress首页轮换图片入口
  • 凡科网网站怎么设置会员登录板块电子工程师是干啥的
  • 苏州市建设局网站集群统一登录wordpress 添加rss
  • 再网站里做商家店铺营销型网站建设哪里有
  • 新网站应该怎么做seo做餐饮在环保局网站备案
  • wordpress仿站教程手机非法网站怎么解决方案
  • 网站建设与维护设计大作业网站作为医院形象建设
  • 信息网站怎么做湛江网站seo
  • wordpress 导航 class临淄关键词网站优化哪家好
  • 哪家公司做门户网站电子商务 网站模板
  • 怎么制作婚介网站重庆seo小z博客
  • 关于网站建设电话销售的开场白内网网站建设流程