Sobes.tech
Junior

Кој патерн припада MVVM?

sobes.tech АИ

Одговор од АИ

Model-View-ViewModel.

Odgovornosti komponenti:

  • Model: Predstavlja podatke in poslovno logiko. Ne pozna View ali ViewModel.
  • View: Prikazuje podatke in pošilja akcije uporabnika v ViewModel. Ne vsebuje poslovne logike.
  • ViewModel: Povezuje Model in View. Vsebuje logiko predstavitve, pretvarja podatke iz Modela za View in obravnava akcije uporabnika. Nima neposrednih povezav z View, interakcija se pogosto izvaja prek vezav ali vzorcev obveščanja (npr. ObservableObject v SwiftUI).

Povezava med komponentami:

  • View se naroči na spremembe v ViewModel.
  • ViewModel posodobi View ob spremembah podatkov v Modelu ali ob obdelavi akcij uporabnika.
  • ViewModel sodeluje z Modelom za pridobivanje ali shranjevanje podatkov.

Primer implementacije (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 = "Ime: \(user.name)"
        self.userAge = "Starost: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

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