Sobes.tech
Junior

Milyen mintához tartozik az MVVM?

sobes.tech MI

Válasz az MI-től

Model-View-ViewModel.

A komponensek felelősségei:

  • Model: Az adatok és az üzleti logika reprezentációja. Nem ismeri a View-t vagy a ViewModel-t.
  • View: Megjeleníti az adatokat és továbbítja a felhasználói műveleteket a ViewModel-nek. Nem tartalmaz üzleti logikát.
  • ViewModel: Összeköti a Model-t és a View-t. Tartalmazza a prezentációs logikát, átalakítja a Model-ből származó adatokat a View számára, és kezeli a felhasználói műveleteket. Nincs közvetlen hivatkozása a View-ra, az interakció gyakran kötéseken vagy értesítési mintákon keresztül történik (pl. ObservableObject SwiftUI-ban).

A komponensek közötti kapcsolat:

  • A View feliratkozik a ViewModel-ben történő változásokra.
  • A ViewModel frissíti a View-t, amikor a Model adatai változnak vagy a felhasználói műveleteket dolgozza fel.
  • A ViewModel a Model-lel való együttműködés révén szerzi be vagy menti az adatokat.

Implementációs példa (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 = "Név: \(user.name)"
        self.userAge = "Kor: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

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