鸿蒙的“官方推荐”架构MVVM

复制代码
一、鸿蒙的“官方推荐”架构

鸿蒙官方在 ArkUI/ArkTS 和 Java HarmonyOS Ability 开发里,推荐用:

1.MVVM(官方最推)

ArkUI/ArkTS 天然支持 数据驱动,也就是 MVVM 核心思想:

Model:数据实体,普通类或 JS 对象

ViewModel:@Observed, @State, @Computed 等管理状态

View:ArkUI Column, Row, Stack 等 UI 组件

数据变化 → UI 自动刷新(无需手动 findView/updateView)

典型标志:

@Observed
class DeviceData {
    batteryPercent: number;
    online: boolean;
}

@Component
struct DeviceItem {
    @ObjectLink data: DeviceData;
    build() {
        Column() {
            Text("电量: " + this.data.batteryPercent + "%")
        }
    }
}


这个就是 ArkUI 的 MVVM 核心方式。

2.MVP / MVI(非官方也可用)

MVP:

Model: 数据实体

View: ArkUI 页面

Presenter: 普通 TypeScript / Java 类负责业务逻辑

这种方式在鸿蒙 Java 端和 ArkUI 前端都可以实现,但不如 MVVM 官方支持好。

使用场景:你想完全分离逻辑和 UI,类似 Android 老项目迁移。

MVI:

也是数据驱动,但强调 状态不可变 + 单向数据流

对于复杂页面(设备列表、巡检表格、地图轨迹)非常适合

二、鸿蒙开发特点与 Android 不同点
# Android 与 鸿蒙 ArkUI/ArkTS 特性对比

| 特性 | Android | 鸿蒙 ArkUI / ArkTS |
|------|---------|------------------|
| **数据绑定** | LiveData / ViewModel | `@State`, `@Observed` |
| **UI 组件** | XML / Jetpack Compose | Column, Row, Stack, Text, Image |
| **事件绑定** | `setOnClickListener` | `onClick={() => {...}}` |
| **生命周期** | Activity / Fragment | Ability + Component |
| **官方推荐架构** | MVVM + Jetpack | MVVM + ArkUI |

总结:鸿蒙官方就是 ArkUI + MVVM,几乎天然支持,直接用 @Observed/@State 就能做双向绑定。

三、鸿蒙项目常用 MVVM 模式结构
project/
│
├─ model/          # 数据模型
│   └─ Device.ts
│
├─ view/           # 页面组件
│   └─ DevicePage.ts
│
├─ viewmodel/      # 管理状态、提供数据
│   └─ DeviceViewModel.ts
│
├─ service/        # 网络/设备/数据库服务
│   └─ DeviceService.ts
└─ utils/


使用方法:

ViewModel 中保存状态

View 使用 @Observed 或 @State 绑定 ViewModel 数据

数据变化 → UI 自动刷新,无需手动更新

四、安卓开发经验迁移到鸿蒙

LiveData → @Observed/@State

ViewModel → ArkTS/Java 对应 ViewModel 类

DataBinding / Jetpack Compose → Column/Row/Stack + build()

MVP 的 Presenter → ArkTS 类 + 自己调用更新函数

核心区别:鸿蒙更偏 声明式 + 数据驱动,MVVM 天然支持,MVP 只能自己写。
相关推荐
heimeiyingwang10 小时前
【架构实战】编排vs协同:微服务通信架构选型
微服务·云原生·架构
ai产品老杨11 小时前
深度解析:基于国产化异构计算的 AI 视频管理平台架构——从 GB28181 接入到 NPU 边缘推流的解耦实践
人工智能·架构·音视频
梦想CAD控件11 小时前
网页CAD协同设计平台-生产级在线实时协同CAD引擎
前端·javascript·架构
SamDeepThinking11 小时前
第1篇-开篇词:几亿用户规模下,我们是怎么做C端高并发商品系统的
java·后端·架构
隔窗听雨眠11 小时前
从ZLibrary入口看数字资源分发架构
架构
霍小毛12 小时前
颠覆数据架构!基于Paimon的轻量智慧湖仓平台,开启数据价值新范式
架构
IntMainJhy12 小时前
「Flutter三方库sqflite的鸿蒙化适配与实战指南:从入门到踩坑的本地数据库开发全记录」
数据库·flutter·华为·信息可视化·数据库开发·harmonyos
007张三丰12 小时前
系统架构设计师范文4:论微服务架构及其应用
微服务·云原生·架构·软考·系统架构设计师
moonsims12 小时前
NavCore惯性测量导航-轻量级安全惯导 / UAV 安全触发 IMU 模块-异构双IMU架构-低噪声稳定感知+高动态异常检测
安全·架构
亦暖筑序12 小时前
AI 客服系统安全加固:JWT 鉴权 + Bucket4j 三层限流
java·架构