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