移动应用架构设计:MVVM实战教程
在移动开发的世界里,我们不仅要写出能运行的代码,更要写易于维护、结构清晰、可测试性强的代码。今天我们要学习的 MVVM(Model-View-ViewModel)架构,就是目前 Android 开发中最主流的一种架构模式。
本篇教程专为零基础的小白准备,我们会从环境搭建开始,一步步带你实现一个简单的项目,让你真正理解什么是 MVVM。
一、MVVM 是什么?为什么它很重要?

MVVM 全称是 Model-View-ViewModel。我们可以简单地把它理解成一种让代码更有“条理”的方式。
举个生活中的例子:
- Model:像是厨房里的食材和菜谱(数据层)
- View:是你看到的餐桌上的饭菜(用户界面 UI)
- ViewModel:是厨师,负责按照菜谱把食材变成饭菜,并根据顾客的要求调整菜品(逻辑处理)
使用 MVVM 的优势:
- 便于团队协作
- 方便后期修改和扩展
- 更容易测试代码
- 官方推荐的架构方式(Google 推荐)
二、环境准备:你只需要一个工具 —— Android Studio

步骤 1:下载安装 Android Studio
选择适合你电脑操作系统的版本下载并安装。
步骤 2:创建新项目
打开 Android Studio → 点击 "New Project" → 选择 "Empty Activity" 模板
输入项目名称如 MyMvvmApp,语言选 Kotlin,点击 Finish。
现在你就有了一个空的 Android 项目。
三、核心概念讲解:三个角色各司其职
下面我们将通过一个最简单的例子——显示一行文字来讲解这三个部分怎么配合工作。
1. Model 层:数据来源
可以是一个本地文件、网络请求,也可以就是一个变量。
// UserData.kt
object UserModel {
val userName = "李小白"
}
这个对象模拟了用户数据。实际开发中可以换成接口或数据库获取的数据。
2. ViewModel 层:连接 Model 和 View
我们在 ViewModel 中暴露 UI 需要的数据。
// UserViewModel.kt
import androidx.lifecycle.ViewModel
class UserViewModel : ViewModel() {
val userName = UserModel.userName
}
ViewModel 是 Google 提供的一个类,用于存储与 UI 相关的数据,但又不直接依赖 View。
3. View 层:UI 显示部分
通常是一个 Activity 或 Fragment,在这里绑定 ViewModel 数据。
<!-- activity_main.xml -->
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="24sp"
android:padding="16dp"/>
然后在 Java/Kotlin 文件中绑定数据:
// MainActivity.kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
import com.example.mymvvmapp.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var viewModel: UserViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// 初始化 ViewModel
viewModel = ViewModelProvider(this).get(UserViewModel::class.java)
// 更新 UI
binding.tvName.text = viewModel.userName
}
}
这样我们就完成了一个最基础的 MVVM 架构程序。
四、实战项目:做一个“欢迎页面”
功能说明:
用户打开 App,就会看到一句欢迎语:“欢迎 李小白 使用我们的应用!”
虽然功能很简单,但我们用 MVVM 结构完整实现一遍。
Step 1:新建 Model
// GreetingModel.kt
object GreetingModel {
fun getGreeting(userName: String): String {
return "欢迎 $userName 使用我们的应用!"
}
}
Step 2:新建 ViewModel
// GreetingViewModel.kt
class GreetingViewModel : ViewModel() {
fun generateGreeting(name: String): String {
return GreetingModel.getGreeting(name)
}
}
Step 3:更新 XML 布局
<TextView
android:id="@+id/tvGreeting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:padding="16dp"/>
Step 4:更新 MainActivity
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var greetingViewModel: GreetingViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
greetingViewModel = ViewModelProvider(this).get(GreetingViewModel::class.java)
val name = "张小红" // 假设这是当前登录用户名
val message = greetingViewModel.generateGreeting(name)
binding.tvGreeting.text = message
}
}
运行后你会看到:
欢迎 张小红 使用我们的应用!
✅ 成功实现了一个完整的 MVVM 示例。
五、新手常见问题解答
❓ 问:我一定要用 Kotlin 吗?
答:Android 支持 Java 和 Kotlin,但官方推荐使用 Kotlin,因为语法更简洁、安全且更适合 MVVM 结构。
❓ 问:ViewModel 跟普通的类有什么区别?
答:普通类不能感知生命周期,而 ViewModel 可以跟随 Activity 生命周期管理数据。即使屏幕旋转了,ViewModel 中的数据也不会丢失。
❓ 问:是不是每个项目都要自己写 ViewModel 类?
答:如果是小型项目可以手写;大型项目推荐结合 Jetpack ViewModel + LiveData 实现更好的状态管理和观察机制。
❓ 问:MVVM 是不是一定比 MVC 好?
答:没有绝对的好坏。MVC 更适合快速开发小程序,MVVM 适合长期维护的大项目。学会它,才能胜任中高级岗位。
六、学习建议:下一步该怎么学?
你现在掌握了一个非常重要的架构思想:MVVM。接下来你可以沿着这条线继续深入:
第一步:掌握 LiveData + ViewModel(安卓官方推荐组合)
val userName = MutableLiveData<String>()
fun updateName(newName: String) {
userName.value = newName
}
第二步:了解 Room 数据库(持久化 Model)
学习如何将数据存在本地,比如用户信息保存到 SQLite。
第三步:学习协程 + Retrofit(网络请求)
让 ViewModel 能够从服务器获取数据。
第四步:学习 Jetpack Compose(现代 UI 开发)
Composable 组件 + ViewModel 组合,是未来主流趋势。
小结
在这一篇《移动应用架构设计:MVVM实战》教程中,我们完成了以下内容:
| 知识点 | 是否覆盖 |
|---|---|
| MVVM 概念 | ✅ |
| 环境搭建 | ✅ |
| Model、ViewModel、View 分工 | ✅ |
| 实战项目演示 | ✅ |
| 常见问题回答 | ✅ |
| 下一步学习建议 | ✅ |

如果你是零基础的新手,请记住一句话:不要怕看不懂专业术语,先照着做一遍,再慢慢理解原理。
祝你在移动开发的路上越走越远!如果你想学习进阶内容,记得关注后续系列教程哦 🚀

评论 0