ViewModel이 Model을 생성하는 것은 좋지 않다고 생각하는 것

3248 단어 MVVMC#WPF

Model을 ViewModel이 만들어야합니까?



때때로 볼 수있는 MVVM 코드의 샘플로, ↓와 같은 것이 있습니다.

MyViewModel.cs

public MyViewModel
{

    MyModel _Model;

    public MyViewModel()
    {
       // モデルのインスタンスを生成
       _Model = new MyModel();
    }
}


다만, 스스로는 위화감 있어...

무엇이 (자신적으로) 이상하다고 느끼는지



"ViewModel은 Model의 그림자인 것인데, 왜 Model이 View에 의존해 돈넨..."

어떤 경우에 문제입니까?



서로 다른 모델간에 상호 작용하려면 모델을 참조하기 위해 ViewModel을 만듭니다.



→ 왜 Model이 ViewModel에 의존하고 있습니까?

예를 들어 백그라운드 (=보기가 없을 때)를 실행하려면 창 (=보기)을 만들어야합니다.



→ 왜 Model이 (ry

어떻게 할까



자신이 잘하는 것이 Singleton 클래스에 Model을 갖게하는 방법

Workspace.cs (Model 레이어)

public Workspace : Singleton
{
    public static Workspace Instance
    {
         ....
    }
    public Model MyModel {get; private set;} = new MyModel();
}


MyViewModel.cs

public class MyViewModel
{

     MyModel _Model;

     public MyViewModel()
     {
          _Model = Workspace.Instance.Model;
     }
}


물론 VisualStudio와 같은 IDE에서는 프로젝트 파일 (솔루션 파일)마다 관심있는 Workspace를 만드는 등 Model을 올바르게 분할하는 궁리가 필요합니다.

View가 Model을 만들어도 문제가 없다면



직렬화 할 생각이나 다른 Model과의 연계도 없으며, Window가 나올 때만 편집하고 싶은 데이터 (View의 수명과 거의 같은 수명의 Model)라면 그다지 문제없는 생각이 듭니다.
반론 · 반례가 있다면 의견을 주시면 감사하겠습니다.

좋은 웹페이지 즐겨찾기