MVC模式中,视图和模型之间直接交互,而MVP模式下,视图与模型通过Presenter进行通信,MVVM则采用双向绑定,减少手动同步视图和模型的工作。每种模式都有其优缺点,适合不同规模和类型的项目。
### MVVM 与 MVP/MVC 的区别:
1. **数据绑定**:
- MVVM 强调 View 和 ViewModel 的自动同步。
- MVP/MVC 需要手动更新 View。
2. **View 的主动性**:
- MVVM 中,View 是完全被动的。
- MVP 中,View 需要通过 Presenter 更新。
- MVC 中,View 可以直接监听 Model 的变化。
3. **适用场景**:
- MVVM 更适合需要频繁更新 UI 的场景(如 GUI 应用)。
- MVP/MVC 更适合简单的逻辑控制。
1.MVC模式
-
Model 负责存储和管理数据。
-
View 负责显示数据。
-
Controller 负责处理用户输入并更新模型,然后通知视图更新显示。
1. 模型(Model)
模型负责管理应用程序的数据和业务逻辑。
// model.h
#ifndef MODEL_H
#define MODEL_H
typedef struct {
int data;
} Model;
void Model_init(Model *model);
void Model_setData(Model *model, int data);
int Model_getData(Model *model);
#endif // MODEL_H
// model.c
#include "model.h"
void Model_init(Model *model) {
model->data = 0;
}
void Model_setData(Model *model, int data) {
model->data = data;
}
int Model_getData(Model *model) {
return model->data;
}
2. 视图(View)
视图负责显示数据给用户。
// view.h
#ifndef VIEW_H
#define VIEW_H
#include "model.h"
typedef struct {
Model *model;
} View;
void View_init(View *view, Model *model);
void View_display(View *view);
#endif // VIEW_H
// view.c
#include "view.h"
#include <stdio.h>
void View_init(View *view, Model *model) {
view->model = model;
}
void View_display(View *view) {
printf(&#