MVVMモードについて
MVVM設計モード
MVVMモードは、既存のMVCモードの問題を解決するために新たに出現した設計モードである.
MVCモードの欠点は,ビューとモデルとの関連性が強く,大きい項目VCほど大きくなることである.
MVVM
ビューとビューモデル、およびモデルからなる新しい設計モデルは、ビューとモデルの間にビューモデルが存在し、ユーザーインタフェースと論理の完全な分離を支援します.
プロセス
サンプルアイテム
!!これはMVVMモードを理解する適切な例ではないかもしれません.フィードバックを歓迎します!
View(ViewController)
ビューに関連付けられたビューコントローラ
ユーザーがテキストを入力してボタンを押し、入力した上でDogViewModelオブジェクトを生成します.
@IBAction func ResultPressed(_ sender: UIButton) {
print("I'm View Controller - ResultPressed")
let name = nameTextField.text ?? ""
let age = ageTextField.text ?? "0"
viewmodel = DogViewModel(name: name, breed: selectedBreed, age: Int(age)!)
viewmodel.configure(self)
}
ViewModelモデル構造でデータを加工するViewModel
ViewModelオブジェクトを作成し、データ加工後にモデルにデータを渡して更新を要求します.
class DogViewModel {
let dog: Dog
init(name: String, breed: String, age: Int) {
print("I'm DogViewModel - init")
self.dog = Dog(name: name, breed: breed, age: age)
(...)
}
}
モデルでデータ更新が完了したら、関数を使用してビューの値を更新できます.extension DogViewModel {
func configure(_ vc: ViewController) {
print("I'm DogViewModel - configure")
vc.nameLabel.text = name
vc.ageLabel.text = ageText
vc.feeLabel.text = adoptionFeeText
}
}
Model実際のデータを含むモデル
渡された値を使用してデータを生成または変更します.
class Dog {
enum Breed {
case mal
case pom
case pug
case poo
}
let name: String
let breed: Breed
let age: Int
init(name: String, breed: String, age: Int) {
(...)
}
}
例を出力して理解を助けるView(View Controller) -> View Model -> Model -> View Model(&View)
ビューモデルによって仲介されるビューとモデル間のデータ伝達は、独立して開発およびテストできます.
Reference
この問題について(MVVMモードについて), 我々は、より多くの情報をここで見つけました https://velog.io/@kkang/MVVM-패턴-이해하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol