侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

移动端架构模式基础比较

2025-12-12 / 0 评论 / 4 阅读

题目

移动端架构模式基础比较

信息

  • 类型:问答
  • 难度:⭐

考点

MVC,MVP,MVVM,架构模式区别

快速回答

移动端三大基础架构模式的核心区别:

  • MVC:Controller处理业务逻辑,直接操作Model和View
  • MVP:Presenter作为中间层,View通过接口与Presenter交互
  • MVVM:ViewModel通过数据绑定自动同步View状态

关键差异:MVVM的耦合度最低,MVP测试性最好,MVC实现最简单。

解析

1. 原理说明

移动端架构模式的核心目标是解耦业务逻辑与UI

  • MVC(Model-View-Controller)
    • Model:数据模型(如用户数据类)
    • View:UI展示(如XML布局)
    • Controller:业务逻辑处理(如Activity/Fragment)
  • MVP(Model-View-Presenter)
    • Presenter取代Controller,通过接口与View通信
    • View不直接操作Model
  • MVVM(Model-View-ViewModel)
    • ViewModel暴露数据流(如LiveData)
    • View通过数据绑定自动更新(如Jetpack Data Binding)

2. 代码示例对比

MVC 伪代码(Android示例)

// Controller (Activity)
class UserActivity extends Activity {
void onCreate() {
TextView nameView = findViewById(R.id.name);
// 直接操作View和Model
User user = UserRepository.getUser();
nameView.setText(user.getName()); // View操作在Controller中
}
}

MVP 伪代码

// Presenter
class UserPresenter {
private UserView view; // View接口

void loadUser() {
User user = UserRepository.getUser();
view.showUserName(user.getName()); // 通过接口回调
}
}

// View接口
interface UserView {
void showUserName(String name);
}

MVVM 伪代码(使用Jetpack)

// ViewModel
class UserViewModel : ViewModel() {
val userName = MutableLiveData<String>()

fun loadUser() {
userName.value = UserRepository.getUser().name
}
}

// XML布局通过Data Binding绑定userName

3. 最佳实践

  • MVC:小型项目快速开发,避免在Activity中堆积过多逻辑
  • MVP:需要单元测试时,Presenter可独立于Android框架测试
  • MVVM:中大型项目,结合LiveData/DataBinding减少模板代码

4. 常见错误

  • MVC中让Activity同时承担View和Controller职责(称为"Massive View Controller"问题)
  • MVP中未使用接口导致View与Presenter强耦合
  • MVVM中滥用数据绑定导致调试困难

5. 扩展知识

  • 数据驱动UI:MVVM的核心思想,View状态随数据自动变化
  • 单向数据流:推荐架构(如MVI),状态变化可预测
  • 架构选择依据
    • 项目复杂度:简单用MVC/MVP,复杂用MVVM
    • 测试需求:MVP最易单元测试
    • 团队熟悉度:MVVM学习曲线较陡