HarmonyOS应用开发实战:猫猫大作战-引擎类的职责设计、与 UI 层的解耦方式

HarmonyOS应用开发实战:猫猫大作战-引擎类的职责设计、与 UI 层的解耦方式 前言在「猫猫大作战」中GameEngine是游戏逻辑的核心类——它封装了棋盘管理、猫咪生成、合并检测、计分等所有核心玩法逻辑。理解引擎类的单例封装和职责划分是构建复杂应用业务层的基础。本文以项目源码GameEngine.ets为锚点讲解引擎类的职责设计、与 UI 层的解耦方式。提示本系列不讲 ArkTS 基础语法与环境搭建假设你已跟完第 1–110 篇。本篇是阶段四第 111 篇。一、引擎类设计1.1 类的定位// GameEngine.ets — 核心游戏逻辑引擎 export class GameEngine { private board: (Cat | null)[][] []; private cats: Mapstring, Cat new Map(); private score: number 0; private catCounter: number 0; private combo: ComboInfo { count: 0, multiplier: 1, lastMergeTime: 0 }; // ... 更多私有状态 }1.2 引擎与 UI 的职责划分职责GameEngineIndex.etsUI棋盘数据✅ 管理❌ 只读显示猫咪位置✅ 计算❌ 只读渲染得分计算✅ 运算❌ 只读展示定时器管理❌✅ setInterval用户交互响应❌✅ onClick生命周期管理❌✅ aboutToDisappear二、与 UI 的协作// Index.ets 中的使用 private gameEngine: GameEngine new GameEngine(); startGame() { this.gameEngine.reset(); // 引擎管理数据UI 通过 getter 获取 this.cats this.gameEngine.getAllCats(); this.score this.gameEngine.getScore(); }三、总结GameEngine 将游戏逻辑与 UI 分离通过 getter 方法向 UI 层暴露只读数据。核心要点引擎类封装棋盘、猫咪、得分等核心数据UI 层通过 getter 只读访问引擎数据引擎不依赖任何 ArkUI 组件下一篇预告第 112 篇将深入棋盘二维数组的实现。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源HarmonyOS 类与对象开源鸿蒙跨平台社区第 110 篇startAbilityByType第 112 篇棋盘二维数组