Junior
¿A qué patrón pertenece MVVM?
sobes.tech AI
Respuesta de la IA
Modelo-Vista-Modelo de Vista.
Responsabilidades de los componentes:
- Modelo: Representa los datos y la lógica de negocio. No conoce la Vista ni el Modelo de Vista.
- Vista: Muestra los datos y envía acciones del usuario al Modelo de Vista. No contiene lógica de negocio.
- Modelo de Vista: Conecta el Modelo y la Vista. Contiene la lógica de presentación, transforma los datos del Modelo para la Vista y procesa las acciones del usuario. No tiene enlaces directos a la Vista, la interacción suele ocurrir a través de enlaces o patrones de notificación (por ejemplo, ObservableObject en SwiftUI).
Relación entre componentes:
- La Vista se suscribe a los cambios en el Modelo de Vista.
- El Modelo de Vista actualiza la Vista al cambiar los datos del Modelo o al procesar acciones del usuario.
- El Modelo de Vista interactúa con el Modelo para obtener o guardar datos.
Ejemplo de implementación (SwiftUI):
// Modelo
struct User {
let name: String
let age: Int
}
// Modelo de Vista
import SwiftUI
final class UserViewModel: ObservableObject {
@Published var userName: String = ""
@Published var userAge: String = ""
private let user: User
init(user: User) {
self.user = user
self.userName = "Nombre: \(user.name)"
self.userAge = "Edad: \(user.age)"
}
}
// Vista
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}