Swift MVVM 设计模式详解:代码示例
当然可以!下面是使用 Swift 代码详细讲解 MVVM 设计模式的示例:
首先,我们创建一个模型类'Person',该类表示一个人,具有'name'和'age'属性:
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
然后,我们创建一个视图模型类'PersonViewModel',该类对应于'Person'模型,并包含用于处理业务逻辑的方法:
class PersonViewModel {
private var person: Person
init(person: Person) {
self.person = person
}
var name: String {
return person.name
}
var age: String {
return 'Age: (person.age)'
}
func increaseAge() {
person.age += 1
}
func updateName(name: String) {
person.name = name
}
}
接下来,我们创建一个视图控制器'PersonViewController',该视图控制器使用'PersonViewModel'来更新界面和处理用户交互:
class PersonViewController: UIViewController {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var ageLabel: UILabel!
private var personViewModel: PersonViewModel!
override func viewDidLoad() {
super.viewDidLoad()
let person = Person(name: 'John Doe', age: 30)
personViewModel = PersonViewModel(person: person)
updateUI()
}
func updateUI() {
nameLabel.text = personViewModel.name
ageLabel.text = personViewModel.age
}
@IBAction func increaseAgeButtonTapped(_ sender: UIButton) {
personViewModel.increaseAge()
updateUI()
}
@IBAction func updateNameButtonTapped(_ sender: UIButton) {
let alertController = UIAlertController(title: 'Update Name', message: nil, preferredStyle: .alert)
alertController.addTextField { (textField) in
textField.placeholder = 'Enter new name'
}
let updateAction = UIAlertAction(title: 'Update', style: .default) { [weak self] (_) in
if let name = alertController.textFields?.first?.text {
self?.personViewModel.updateName(name: name)
self?.updateUI()
}
}
alertController.addAction(updateAction)
present(alertController, animated: true, completion: nil)
}
}
在这个示例中,'PersonViewController'作为视图,负责显示人的姓名和年龄,并通过'PersonViewModel'来处理用户交互和更新数据。'PersonViewModel'封装了'Person'模型的数据和业务逻辑,并提供了用于更新界面的计算型属性和方法。
总结一下,MVVM 设计模式将模型、视图和视图模型分离,使代码更加可维护和可测试。模型类表示数据,视图类负责显示界面,视图模型类处理业务逻辑,并通过绑定将数据更新到视图上。
希望这个示例能帮助你更好地理解 MVVM 设计模式!
原文地址: http://www.cveoy.top/t/topic/o73q 著作权归作者所有。请勿转载和采集!