Sobes.tech
Junior

K akému vzoru patrí MVVM?

sobes.tech AI

Odpoveď od AI

Model-View-ViewModel.

Zodpovednosti komponent:

  • Model: Predstavuje údaje a obchodnú logiku. Nevie o View alebo ViewModel.
  • View: Zobrazuje údaje a odosiela akcie používateľa do ViewModel. Neobsahuje obchodnú logiku.
  • ViewModel: Spája Model a View. Obsahuje prezentačnú logiku, transformuje údaje z Modelu pre View a spracováva akcie používateľa. Nemá priame odkazy na View, interakcia sa často deje cez väzby alebo vzory oznámení (napríklad, ObservableObject v SwiftUI).

Vztah medzi komponentami:

  • View sa prihlási na zmeny vo ViewModel.
  • ViewModel aktualizuje View pri zmenách v údajoch z Modelu alebo pri spracovaní akcií používateľa.
  • ViewModel komunikuje s Modelom na získanie alebo uloženie údajov.

Príklad implementácie (SwiftUI):

// Model
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 = "Meno: \(user.name)"
        self.userAge = "Vek: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

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