Sobes.tech
Junior

MVVM რომელ ნიმუშს ეკუთვნის?

sobes.tech AI

პასუხი AI-სგან

Model-View-ViewModel.

კომპონენტების პასუხისმგებლობები:

  • Model: წარმოადგენს მონაცემებს და ბიზნეს ლოგიკას. არ იცის View ან ViewModel-ის შესახებ.
  • View: აჩვენებს მონაცემებს და აგზავნის მომხმარებლის მოქმედებებს ViewModel-ს. არ შეიცავს ბიზნეს ლოგიკას.
  • ViewModel: აკავშირებს Model-ს და View-ს. შეიცავს პრეზენტაციის ლოგიკას, გარდაქმნის Model-დან მონაცემებს View-ისთვის და მართავს მომხმარებლის მოქმედებებს. პირდაპირი კავშირი არ აქვს View-ს, ურთიერთქმედება ხშირად ხდება ბაინდინგების ან შეტყობინების ნიმუშების საშუალებით (მაგ., ObservableObject SwiftUI-ში).

კომპონენტებს შორის კავშირი:

  • View ეწერება ViewModel-ში ცვლილებების შესახებ.
  • ViewModel განაახლებს View-ს მონაცემების ცვლილების ან მომხმარებლის მოქმედებების დამუშავების დროს.
  • ViewModel ურთიერთქმედებს Model-თან მონაცემების მიღებისა და შენახვისთვის.

სრულად განსახორციელებელი მაგალითი (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 = "სახელი: \(user.name)"
        self.userAge = "ასაკი: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

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