IOS 中什么是 MVVM 模式?在 IOS 开发中有哪些应用场景?代码举例讲解

MVVM 是 Model-View-ViewModel 的缩写,是一种软件架构模式。它可以替代 MVC 模式,在 IOS 开发中有以下主要应用场景:

  1. 解耦视图和业务逻辑。ViewModel 处于视图和模型之间,负责数据处理和业务逻辑,视图只负责显示数据。这使得后期维护和测试变得更加容易。
  2. 更好的可测试性。ViewModel 可以被单独测试,不依赖视图。
  3. 易于管理数据流。ViewModel 负责管理数据流向视图,清晰可控。
  4. 重用性更高。同一个 ViewModel 可以被多个视图重用。

MVVM 的基本实现步骤:

  1. 创建模型(Model)存储数据。
  2. 创建视图控制器(View)负责布局视图和响应交互。
  3. 创建视图模型(ViewModel)处理业务逻辑和数据流。
  4. 视图控制器持有视图模型,并通过绑定将其输出数据流向视图。
  5. 通过传入输入(用户交互)更新视图模型。

下面是一个简单示例:

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 
    }
}

可以看到,视图控制器很薄,仅负责布局和响应交互,数据流和业务逻辑被视图模型接管,这使得代码更加清晰易维护。