题目
简述MVC架构及其各层职责
信息
- 类型:问答
- 难度:⭐
考点
MVC架构,分层职责,移动端架构基础
快速回答
MVC架构将移动应用分为三个核心组件:
- Model(模型):管理数据和业务逻辑
- View(视图):处理UI展示和用户交互
- Controller(控制器):协调Model和View的交互
原理说明
MVC(Model-View-Controller)是一种解耦UI、业务逻辑和数据的架构模式:
- 单向数据流:用户操作 → View通知Controller → Controller更新Model → Model通知View刷新
- 职责分离:各层独立变化,提高可维护性
代码示例(Android伪代码)
// Model:数据管理
class UserModel {
String name;
void saveData(String name) { /* 存储逻辑 */ }
}
// View:UI展示
class ProfileActivity {
TextView nameView;
void updateUI(String name) { nameView.setText(name); }
}
// Controller:协调交互
class UserController {
UserModel model;
ProfileActivity view;
void onSaveButtonClick(String input) {
model.saveData(input); // 更新Model
view.updateUI(input); // 更新View
}
}各层详细职责
| 组件 | 职责 | 典型代码 |
|---|---|---|
| Model | 数据存取、业务规则、网络请求 | Room/SQLite操作、API调用 |
| View | UI渲染、用户输入响应 | XML布局、Activity/Fragment UI逻辑 |
| Controller | 接收用户事件、调用Model、更新View | Activity事件处理、ViewModel逻辑 |
最佳实践
- 禁止View直接操作Model,必须通过Controller
- Model层保持平台无关(可独立于Android/iOS)
- 复杂场景中Controller可拆分为Presenter/ViewModel
常见错误
- Massive ViewController:在Controller中堆积过多逻辑(应拆分到Model)
- View-Model耦合:View直接读写Model数据(破坏分层原则)
- 循环依赖:Model持有View引用(导致内存泄漏)
扩展知识
- MVVM:用Data Binding自动同步View和Model,替代Controller的手动更新
- MVP:通过接口解耦View和Presenter,便于单元测试
- 适用场景:MVC适合中小型应用,MVVM/MVP更适合复杂交互场景