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 // 仅作为入
