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

百度网站建设及推广电子商务公司网站模版

百度网站建设及推广,电子商务公司网站模版,wordpress同步微博,广州地区网站建设运行在VS2022,x86,Debug下。 30. 外观模式 为子系统定义一组统一的接口,这个高级接口会让子系统更容易被使用。应用:如在游戏开发中,游戏引擎包含多个子系统,如物理、渲染、粒子、UI、音频等。可以使用外观…

运行在VS2022,x86,Debug下。

30. 外观模式

在这里插入图片描述

  • 为子系统定义一组统一的接口,这个高级接口会让子系统更容易被使用。
  • 应用:如在游戏开发中,游戏引擎包含多个子系统,如物理、渲染、粒子、UI、音频等。可以使用外观模式来封装这些复杂的子系统,提供一个简单的接口给游戏开发者,从而无需直接操作复杂的子系统,简化了开发流程。
  • 实现
    • 子系统。
    • 外观,提供统一的接口。
    • 客户端。
  • 代码如下。
    • 游戏引擎外观(GameEngineFacade类)使用单例模式,确保在整个游戏中只有一个外观实例,从而统一管理子系统资源。
// 物理引擎子系统
class PhysicsSystem
{
public:void init() { cout << "Initializing physics engine..." << endl;}void update() { cout << "Updating physics..." << endl; }
};//渲染子系统
class GraphicsSystem
{
public:void init() { cout << "Initializing graphics..." <<endl; }void render() { cout << "Rendering graphics..." << endl;}
};//粒子子系统
class ParticleSystem
{
public:void init() { cout << "Initializing particle..." << endl; }void createParticle() { cout << "Creating particle..." << endl; }
};//游戏引擎外观
class GameEngineFacade 
{
private:PhysicsSystem* physics;GraphicsSystem* graphics;ParticleSystem* particle;GameEngineFacade() //私有构造函数{physics = new PhysicsSystem();graphics = new GraphicsSystem();particle = new ParticleSystem();}~GameEngineFacade() //私有析构函数{if (physics){delete physics;physics = nullptr;}if (graphics){delete graphics;graphics = nullptr;}if (particle){delete particle;particle = nullptr;}}GameEngineFacade(const GameEngineFacade&) = delete; //删除拷贝构造函数GameEngineFacade& operator=(const GameEngineFacade&) = delete; //删除赋值运算符GameEngineFacade(GameEngineFacade&&) = delete; //删除移动构造函数GameEngineFacade& operator=(GameEngineFacade&&) = delete; //删除移动赋值运算符public:static GameEngineFacade* getInstance() //静态函数,获取实例{static GameEngineFacade instance; //局部静态变量,存储实例return &instance;}void initGame() {graphics->init();physics->init();particle->init();}void updateGame() {physics->update();particle->createParticle();}void renderGame() {graphics->render();}
};int main()
{GameEngineFacade* gameEngine = GameEngineFacade::getInstance();gameEngine->initGame();gameEngine->updateGame();
}

反汇编分析,子系统资源创建到释放过程

  • 第一次调用getInstance() 获取外观实例时:_Init_thread_header()和_Init_thread_footer()是多线程同步函数,确保局部静态变量初始化是线程安全的。GameEngineFacade()构造函数来创建实例,_atexit()注册实例的析构函数。如下图。

在这里插入图片描述

  • 执行完构造函数,创建了三个子系统,如下图。

在这里插入图片描述

  • main()返回,如下图。

在这里插入图片描述

  • _exit()执行析构函数或atexit注册的函数指针,最后结束程序,如下图。

在这里插入图片描述

  • 执行atexit注册的外观实例的析构函数,将三个子系统资源释放。

在这里插入图片描述

http://www.yayakq.cn/news/209392/

相关文章:

  • 企业网站 建设策划书wordpress加载转圈
  • 滕州做网站的优化seo方案
  • ps设计师网站有哪些公司注册公司流程
  • 和两个黑人同时做网站个人网页模板关于爱国
  • 4d网站广告图用什么做的wordpress前端用户网址
  • 有什么网站可以做数学题wordpress怎么加地图
  • 宠物店网站开发文档撰写关于中秋节网页设计实训报告
  • 网站维护的基本内容有哪些凤凰军事新闻
  • 最好的自助建站系统百度竞价推广培训
  • 电子商务与网站平台建设的关系富阳招聘网
  • 中企动力做的网站后台如何登陆wordpress文章关键词在哪里
  • 长沙网站制作公司怎么做佛山高明网站建设设计
  • 平陆县做网站为什么打开网站是建设中
  • 怎么做m开头的网站网站上传的图片不显示
  • 盐城做网站找哪家好wordpress音频播放不了
  • 湖北省建设厅网站查询膳食管理东莞网站建设
  • 网站的规划与建设_按时间顺序可以分为哪等五个阶段美丽南方的网站建设
  • 百度云如何做网站成都科技网站建设找
  • 微信开店小程序怎么做深圳谷歌seo推广
  • 山东网站建设是什么房地产网站建设与优化分析
  • 唐山建设厅官方网站农夫山泉vi设计案例
  • 论坛网站制作教程仿网站被封怎么办
  • 设计师网站导航wordpress升级插件
  • 高端网站开发平台龙岩网站设计 信任推商吧做词
  • 深圳市手机网站建设报价做网站的有哪些学校
  • 盐田网站建设中国机械加工网19易5下2拉i
  • 做网站要用到数据库吗郑州手机软件开发公司
  • 手机网站cms有哪些flash网站标题和网址
  • 北京网站设计网站公司wordpress开发手册中文版
  • 通辽网站建设tlyltd宁波公司建网站哪家