鸿蒙的“官方推荐”架构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 只能自己写。
相关推荐
李游Leo1 小时前
HarmonyOS 7 实战开发 05:把页面做到可上线状态
ios·harmonyos
一尘之中1 小时前
指挥控制中心与指控系统:概念、应用、厂商与DDS技术全景
学习·架构·ai写作
徐小夕2 小时前
存量.doc 文档怎么办?JitWord 开源转换库打通旧文档到在线协同全链路
后端·架构·github
安易算力2 小时前
PUE优化工程实践:从1.5到1.2的制冷架构与气流组织改造路径
网络·python·容器·架构·kubernetes
这个DBA有点耶3 小时前
InnoDB索引组织表下,复合主键和自增主键的物理存储差异与选型对比
数据库·mysql·架构
青山木3 小时前
RocketMQ 入门到原理(三):消息存储原理
java·后端·中间件·架构·rocketmq
阳明山水4 小时前
校准分位数驱动智能库存决策
人工智能·深度学习·算法·机器学习·架构
zhangfeng11334 小时前
ATK(华为算子测试平台)详细介绍 CANN(Compute Architecture for Neural Networks,神经网络计算架构
人工智能·华为·ai编程·npu·cann
贾伟康4 小时前
【HarmonyOS 7新能力|043】可变字体工程封装:把接入逻辑放进可维护的分层结构
harmonyos·arkts·arkui·ui设计·可变字体
HarmonyOS_SDK4 小时前
HarmonyOS智慧多窗,让应用在任意窗口都“恰到好处”
harmonyos