Sobes.tech
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)
        }
    }
}