MVVM 是 Model-View-ViewModel 的缩写,是一种软件架构模式。它可以替代 MVC 模式,在 IOS 开发中有以下主要应用场景:
- 解耦视图和业务逻辑。ViewModel 处于视图和模型之间,负责数据处理和业务逻辑,视图只负责显示数据。这使得后期维护和测试变得更加容易。
- 更好的可测试性。ViewModel 可以被单独测试,不依赖视图。
- 易于管理数据流。ViewModel 负责管理数据流向视图,清晰可控。
- 重用性更高。同一个 ViewModel 可以被多个视图重用。
MVVM 的基本实现步骤:
- 创建模型(Model)存储数据。
- 创建视图控制器(View)负责布局视图和响应交互。
- 创建视图模型(ViewModel)处理业务逻辑和数据流。
- 视图控制器持有视图模型,并通过绑定将其输出数据流向视图。
- 通过传入输入(用户交互)更新视图模型。
下面是一个简单示例:
swift
// Model
struct User {
var name: String
}
// ViewModel
class UserViewModel {
var user = User(name: "John")
var name: String {
return user.name
}
}
// ViewController
class ViewController: UIViewController {
@IBOutlet weak var nameLabel: UILabel!
var viewModel = UserViewModel()
override func viewDidLoad() {
super.viewDidLoad()
// 绑定ViewModel的输出到视图
nameLabel.text = viewModel.name
}
// 响应用户交互更新ViewModel
@IBAction func changeName(_ sender: UIButton) {
viewModel.user.name = "Jack"
// 由于绑定,视图会自动更新
nameLabel.text = viewModel.name
}
}
可以看到,视图控制器很薄,仅负责布局和响应交互,数据流和业务逻辑被视图模型接管,这使得代码更加清晰易维护。