MVC与MVVM有何本质区别,导致架构设计理念大相径庭?

摘要:一、MVC 架构 1. 角色定义 Model(数据模型):管理数据、业务逻辑、网络请求、数据库操作等 View(视图):负责 UI 展示,接收用户操作并抛出事件,不包含业务逻辑 Controller(控制器):作为调度中心,处理用户交互、调
一、MVC 架构 1. 角色定义 Model(数据模型):管理数据、业务逻辑、网络请求、数据库操作等 View(视图):负责 UI 展示,接收用户操作并抛出事件,不包含业务逻辑 Controller(控制器):作为调度中心,处理用户交互、调用 Model、更新 View 2. 目录结构 src/main/ets/ ├── model/ │ └── DataModel.ets ├── view/ │ └── MyView.ets └── pages/ └── Index.ets // 作为 Controller 3. 代码示例 Model export class DataModel { getInfo(): string { return "鸿蒙 MVC 标准架构"; } } View @Component export struct MyView { @Prop content: string; onButtonClick?: () => void; build() { Column() { Text(this.content) .fontSize(28) .margin(15) Button("点击获取数据") .onClick(() => { this.onButtonClick?.(); }) } } } Controller(主页面) import { DataModel } from '../model/DataModel'; import { MyView } from '../view/MyView'; @Entry @Component struct Index { private dataModel: DataModel = new DataModel(); @State showText: string = "请点击按钮"; build() { Column() { MyView({ content: this.showText, onButtonClick: () => { this.showText = this.dataModel.getInfo(); } }) } .width('100%') .height('100%') .justifyContent(FlexAlign.Center) } } 4. 执行流程 用户在 View 上点击 View 将事件抛给 Controller Controller 调用 Model 获取数据 Controller 更新 @State 状态,View 自动刷新 5. 流程图 ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ View │───────▶│ Controller │───────▶│ Model │ │ 自定义UI组件 │ 事件 │ 主页面 │ 调用 │ 数据模型 │ └─────────────┘ └─────────────┘ └─────────────┘ ▲ │ │ 返回数据 │ └──────────────────────────────────────────────────┘ 二、MVVM 架构 1. 角色定义 Model(数据模型):数据、业务逻辑、网络请求、数据库操作 View(页面/组件):只负责 UI 显示,不包含业务逻辑 ViewModel(视图模型):核心枢纽,管理状态、处理逻辑、提供数据绑定,自动驱动 UI 更新 2. 目录结构 src/main/ets/ ├── model/ │ └── DataModel.ets ├── viewmodel/ │ └── DataViewModel.ets ├── view/ │ └── NewMyView.ets └── pages/ └── Index.ets // 仅作为入
阅读全文