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)
}
}
}