Sobes.tech
Junior

A que padrão pertence o MVVM?

sobes.tech IA

Resposta da IA

Modelo-View-ViewModel.

Responsabilidades dos componentes:

  • Modelo: Representa os dados e a lógica de negócio. Não conhece a View ou o ViewModel.
  • View: Exibe os dados e envia ações do utilizador ao ViewModel. Não contém lógica de negócio.
  • ViewModel: Liga o Modelo e a View. Contém a lógica de apresentação, transforma os dados do Modelo para a View e processa as ações do utilizador. Não possui ligações diretas à View, a interação ocorre frequentemente através de ligações ou padrões de notificação (por exemplo, ObservableObject no SwiftUI).

Relação entre componentes:

  • A View subscreve-se às alterações no ViewModel.
  • O ViewModel atualiza a View ao alterar os dados do Modelo ou ao processar ações do utilizador.
  • O ViewModel interage com o Modelo para obter ou guardar dados.

Exemplo de implementação (SwiftUI):

// Modelo
struct User {
    let name: String
    let age: Int
}

// ViewModel
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 = "Nome: \(user.name)"
        self.userAge = "Idade: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

    var body: some View {
        VStack {
            Text(viewModel.userName)
            Text(viewModel.userAge)
        }
    }
}