Modèle-Vue-VueModèle (MVVM)
Model-View-ViewModel (MVVM) est un modèle de conception architecturale qui gagne en popularité dans le développement iOS. Il s'agit d'un dérivé du modèle populaire Model-View-Controller (MVC), utilisé depuis longtemps dans le développement iOS. MVVM est un excellent moyen de séparer les préoccupations et d'améliorer la lisibilité et la maintenabilité du code. Dans cet article, nous discuterons du modèle MVVM et de la manière dont il peut être implémenté dans Swift.
Qu'est-ce que MVVM ?
Le modèle MVVM est un modèle de conception architecturale qui sépare les préoccupations de l'interface utilisateur de la logique métier. Il fournit une séparation claire entre la couche de présentation des données et la couche de logique métier. Cette séparation permet une meilleure lisibilité, maintenabilité et testabilité du code.
Le modèle MVVM se compose de trois composants : le modèle, la vue et le modèle de vue. Le modèle représente les données, la vue représente l'interface utilisateur et le modèle de vue est l'intermédiaire entre les deux.

Modèle:
Le modèle est responsable des données dans l'application. Il s'agit d'une abstraction des données, qui peuvent provenir de diverses sources, telles qu'une base de données, un service réseau ou un fichier. Le modèle est également responsable de la validation des données et de la logique métier. Il ne doit contenir aucune interface utilisateur ou logique de présentation.
Voir:
La vue est responsable de la présentation des données à l'utilisateur. C'est le composant d'interface utilisateur de l'application. La vue ne doit contenir aucune logique métier ou validation de données. Il ne doit présenter les données que d'une manière visuellement attrayante.
Afficher le modèle :
Le modèle de vue est l'intermédiaire entre le modèle et la vue. Il est responsable de la préparation des données pour la présentation dans la vue. Le modèle de vue est également responsable de la gestion des entrées de l'utilisateur et de la mise à jour du modèle si nécessaire. Il ne doit contenir aucune interface utilisateur ou logique de présentation.
Implémentation de MVVM dans Swift :
Pour implémenter MVVM dans Swift, nous utiliserons les étapes suivantes :
Créer le modèle
La première étape de l'implémentation de MVVM consiste à créer le modèle. Le modèle doit être une structure de données simple qui représente les données dans l'application. Il ne doit contenir que les propriétés et méthodes nécessaires pour interagir avec les données.
Voici un exemple de modèle :
struct User {
let name: String
let email: String
let age: Int
}
La deuxième étape de l'implémentation de MVVM consiste à créer la vue. La vue doit être un composant distinct du modèle et du modèle de vue. Il ne doit contenir que du code d'interface utilisateur et ne doit contenir aucune logique métier ou validation de données.
Voici un exemple de vue :
import UIKit
class UserView: UIView {
let nameLabel = UILabel()
let emailLabel = UILabel()
let ageLabel = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
setupSubviews()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupSubviews()
}
private func setupSubviews() {
// add subviews to the view
addSubview(nameLabel)
addSubview(emailLabel)
addSubview(ageLabel)
}
func configure(with user: User) {
nameLabel.text = user.name
emailLabel.text = user.email
ageLabel.text = "\(user.age)"
}
}
La troisième étape de l'implémentation de MVVM consiste à créer le modèle de vue. Le modèle de vue doit être un composant distinct du modèle et de la vue. Il ne doit contenir que la logique métier et la logique de présentation. Le modèle de vue doit interagir avec le modèle pour préparer les données à présenter dans la vue.
Voici un exemple de modèle de vue :
class UserViewModel {
init(user: User) {
self.user = user
}
func configure(view: UserView) {
view.configure(with: user)
}
}
La dernière étape de l'implémentation de MVVM consiste à connecter le modèle de vue et la vue. Cela peut être fait en utilisant l'injection de dépendances ou en créant le modèle de vue dans le contrôleur de vue et en le transmettant à la vue. Voici un exemple de connexion du modèle de vue et de la vue :
class UserViewController: UIViewController {
let userView = UserView()
let userViewModel: UserViewModel
init(user: User) {
self.userViewModel = UserViewModel(user: user)
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
userViewModel.configure(view: userView)
view.addSubview(userView)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
userView.frame = view.bounds
}
}
Conclusion
Le modèle MVVM est un excellent moyen de séparer les préoccupations et d'améliorer la lisibilité, la maintenabilité et la testabilité du code dans le développement iOS. En séparant l'interface utilisateur de la logique métier et des données, nous pouvons créer un code plus modulaire et réutilisable. Swift fournit un excellent langage pour implémenter le modèle MVVM en raison de sa prise en charge de la programmation orientée objet et de la programmation fonctionnelle. En implémentant MVVM dans Swift, nous pouvons créer d'excellentes applications iOS plus faciles à développer, à maintenir et à tester.