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

Store + System:鸿蒙游戏黄金分层

网罗开发(小红书、快手、视频号同名)

大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。


文章目录

    • 引言
    • 一、先说结论
    • 二、为什么必须拆分?
    • 三、Store 的唯一职责:承载状态
    • 四、System 的唯一职责:定义规则
    • 五、黄金分层的核心价值
      • 1、复杂度被“切断”
      • 2、逻辑可以复用
      • 3、天然可测试
      • 4、多端天然一致
    • 六、一个非常关键的误区
      • 正确方式:
    • 七、进阶:让 System 变“无状态”
      • 错误写法
      • 正确写法
    • 八、黄金分层的运行流程
    • 九、如何落地到真实项目?
      • Engine 示例
    • 十、为什么这是“黄金分层”?
      • 1、稳定性
      • 2、扩展性
      • 3、可控性
    • 十一、开发者最容易踩的坑
      • 坑 1:Store 写逻辑
      • 坑 2:System 太大
      • 坑 3:UI 改状态
    • 十二、一个终极认知
    • 总结

引言

当你把鸿蒙游戏越做越复杂,你一定会撞上一堵墙:

逻辑开始混乱 状态开始失控 修改一个功能牵一发而动全身

很多人会以为问题是:

代码不够优雅 命名不够规范 文件拆得不够细

但真正的问题只有一个:

你没有做好“分层”

我们把鸿蒙游戏里最重要的一条架构原则讲清楚:

Store + System:黄金分层

一、先说结论

Store 只负责“存什么”
System 只负责“怎么变”

这两个职责,必须绝对分离。

二、为什么必须拆分?

我们先看一个“很常见但有毒”的写法:

classGameStore{hp=100exp=0attack(){this.hp-=10}levelUp(){if(this.exp>=100){this.exp=0}}}

看起来没问题,但本质是:

状态 + 规则 混在一起

结果就是:

无法复用 无法测试 无法扩展

一句话总结:

Store 一旦写逻辑,就会变成“上帝对象”

三、Store 的唯一职责:承载状态

正确的 Store 应该是:

exportclassGameStore{hp=100exp=0level=1}

特点:

没有复杂逻辑 没有业务规则 没有副作用

你可以把它理解为:

游戏世界的“当前快照”

四、System 的唯一职责:定义规则

所有“状态如何变化”,必须写在 System 里:

exportclassBattleSystem{attack(store:GameStore){store.hp-=10if(store.hp<0){store.hp=0}}}
exportclassLevelSystem{addExp(store:GameStore,exp:number){store.exp+=expif(store.exp>=100){store.level+=1store.exp=0}}}

一句话总结:

System 是“规则引擎”

五、黄金分层的核心价值

1、复杂度被“切断”

Store:不会变复杂 System:按领域拆分

复杂度不会再集中爆炸。

2、逻辑可以复用

battle.attack(store)

可以在:

战斗 AI 自动战斗

中复用。

3、天然可测试

battle.attack(mockStore)

不需要 UI,不需要环境。

4、多端天然一致

因为:

Store 是唯一状态源 System 是纯规则

所以:

只要 Store 一致,所有设备表现一致

六、一个非常关键的误区

很多人会这样写:

store.hp-=10

直接在 UI 或其他地方改状态。

问题是:

你绕过了 System

结果:

逻辑分散 不可追踪 无法维护

正确方式:

battleSystem.attack(store)

七、进阶:让 System 变“无状态”

一个高级但非常重要的原则:

System 不持有状态

错误写法

classBattleSystem{store:GameStore}

问题:

生命周期混乱 多端难同步 耦合增加

正确写法

attack(store:GameStore){...}

System:

只接收状态 不保存状态

八、黄金分层的运行流程

整个游戏运行,其实就是一条链路:

输入(点击 / AI) ↓ System(执行规则) ↓ Store(状态变化) ↓ UI(自动更新)

你会发现:

UI 不再是核心,System 才是核心

九、如何落地到真实项目?

推荐结构:

/store └── GameStore.ts /system ├── BattleSystem.ts ├── LevelSystem.ts ├── DropSystem.ts ├── AISystem.ts /engine └── GameEngine.ts /ui └── pages...

Engine 示例

classGameEngine{battle=newBattleSystem()level=newLevelSystem()update(store:GameStore){this.battle.attack(store)this.level.addExp(store,1)}}

十、为什么这是“黄金分层”?

因为它满足三个核心目标:

1、稳定性

Store 很稳定

2、扩展性

System 可无限扩展

3、可控性

所有变化都经过 System

十一、开发者最容易踩的坑

坑 1:Store 写逻辑

→ 直接崩架构

坑 2:System 太大

一个 GameSystem 管全部

坑 3:UI 改状态

绕过规则层

十二、一个终极认知

当你真正理解这套分层之后,你会发现系统本质是:

一个“状态变换系统”

而不是:

一堆页面 + 一堆逻辑

总结

鸿蒙游戏最核心的架构原则:

Store:只存数据 System:只写规则

所有复杂系统,最终都可以还原为:

System → 改变 Store → UI 自动更新

如果用一句话总结:

Store 决定“现在是什么”,System 决定“接下来会变成什么”。

http://www.jsqmd.com/news/741916/

相关文章:

  • 全志A33安卓6.0上,搞定RTL8723BU蓝牙驱动移植的完整踩坑记录
  • 【绝密适配矩阵V2.3】:覆盖龙芯3A6000/申威SW64/飞腾D2000/海光Hygon C86的C语言ABI兼容性交叉对照表(内部流出,限信创单位下载)
  • AI代码安全审计:从语义理解到DevSecOps落地的实践指南
  • 深度解析:百度网盘分享链接解析工具的技术架构与实现原理
  • SLEICL框架:用“魔法书”增强小模型推理能力
  • Git实战进阶:从基础操作到团队协作与历史优化的完整指南
  • 从特斯拉线圈到手机充电:用生活中的例子彻底搞懂交变电流
  • 告别配置混乱!手把手教你用EB Tresos Studio搞定AUTOSAR MCAL的CAN模块(附邮箱排序避坑指南)
  • 为什么你的BMS代码过不了ASPICE CL2审计?C语言开发过程缺失的7个可追溯性证据链,今天必须补全
  • Equalizer APO深度解析:Windows音频处理架构剖析与技术实现
  • 喷涂轨迹规划与系统开发【附代码】
  • Arm Fast Models跟踪组件原理与调试实践
  • 华三防火墙配置踩坑实录:内网通过公网IP访问服务器,策略放行后为啥还不行?
  • Get cookies.txt LOCALLY:三步搞定浏览器Cookie安全导出,彻底告别隐私泄露风险
  • 不同厂商电脑检测工具汇总
  • Godot ECS插件:数据驱动架构提升游戏性能与开发效率
  • 命令行文本整理工具collate:自动化处理日志、配置与数据文件
  • Arm CI-700互联架构:节点ID映射与SAM设计解析
  • 避坑指南:在Ubuntu 22.04上搞定PaddleOCR GPU环境(CUDA 11.8 + Python 3.8)
  • Zotero GPT实战解密:用AI智能标签重构你的文献管理流程
  • 2026年正规系统门窗TOP5技术解析:成都五恒系统/系统门窗/绿建系统/遮阳系统/重庆五恒系统/重庆绿建/长沙五恒系统/选择指南 - 优质品牌商家
  • 从防御者视角看OA安全:盘点那些年我们遇到的泛微、用友、致远漏洞及修复建议
  • 利用Git Hook与AI自动生成项目状态文档,解决开发上下文丢失难题
  • 2026工业级碳铵生产企业名录:农用级碳酸氢铵、农用级碳铵、工业碳酸氢铵生产企业、工业碳铵生产企业、工业级碳酸氢铵生产企业选择指南 - 优质品牌商家
  • Rust实现奥赛罗棋AI引擎:从位棋盘到Alpha-Beta剪枝的实战解析
  • 使用 Taotoken 统一 API 为小型创业团队管理 AI 开发成本
  • 2026Q2成都正规书画定制:成都书画装裱定制/成都书画装裱推荐/成都附近书画定制店500米/成都附近装裱店/附近书画定制推荐/选择指南 - 优质品牌商家
  • 深入frontier_exploration:从costmap插件到actionlib,拆解ROS自主探索的‘黑盒子’
  • FPGA新手避坑指南:Spartan-6的IO引脚约束与电平标准配置详解(附完整UCF文件示例)
  • 别再乱存session_key了!微信小程序登录后,这3个安全坑我帮你踩过了