MVVM에서 모델의 역할
(데이터)의 역할에 관한 기사를 몇 개 읽었습니다.MVVM 패턴의 모델.하지만 나는 여전히 그 모델에 무엇이 들어가는지 알 수 없었다.
모델이 Inotify를 구현해야 합니까?속성이 변경되었습니까?그렇다면 VM과 모델의 차이점은 무엇입니까?
그렇지 않으면 모델이 변경되어도 VM 및 뷰에 알리지 않습니다.따라서 모델에 논리가 적용되는 것을 고려하면 View Model에 일부 변경 사항을 알려야 합니다.다만, Inotify를 실장하는 것은 이상하지 않습니까?두 클래스에서 속성이 변경되었습니까?
정말 감사합니다!
이 모델은 비즈니스 로직을 구현합니다.뷰 모델은 뷰(Web, winform, CLI 등 일부 형식의 UI)에서 비즈니스 로직을 표시하고 상호 작용하기 위해 사용자의 비즈니스 로직을 장식합니다.그래서, 아니요, 저는 당신의 모델이 이 시스템을 구현해야 한다고는 말하지 않을 것입니다.INotifyPropertyChanged
핵심 비즈니스 로직의 일부로서 그렇게 하지 않는 한 말입니다.
코멘트 중 하나:
모델이 Inotify를 구현하고 있는 것이 이상하다고 생각한다.Property Changed(프로퍼티 변경) - UI 관련 클래스로 보입니다.
변경 통지는 UI 컨텍스트가 아닌 모든 컨텍스트에서 사용됩니다.예를 들어 특정 변경을 로그에 기록하는 진단 코드를TextWriter
오브젝트가 변경 알림을 구현하면 기본 모델 오브젝트를 변경하지 않고도 쉽게 이 작업을 수행할 수 있습니다.
그러나 UI 업데이트에만 사용되는 응용 프로그램에서도 이 패턴은 여전히 유효합니다.변경 통지는 이벤트를 통해 처리되므로 이벤트를 발생시키는 개체는 이벤트를 처리하는 개체에서 분리됩니다.모델에서는 어떤 UI를 사용하고 있는지 알 수 없으며 알 필요도 없습니다.즉, "UI가 있다고 가정할 때 이 자산의 가치가 방금 변경되었음을 알려야 합니다."
그럼 뷰 모델은 왜 있는 거죠?그냥 모델에 직접 바인딩하지 그래요?실제로 모델에 변경 통지가 구현되어 있는 경우 모델에 직접 바인딩할 수 있습니다.많은 간단한 WPF 어플리케이션에서는 별도의 뷰 모델이 필요하지 않습니다.변경 알림을 모델에 구현하고 종료하기만 하면 됩니다.UI를 기본 비즈니스 로직에서 분리해야 할 때 뷰 모델의 필요성이 발생하는 단일 책임 원칙을 위반하지 않는지 걱정하기 시작합니다.
경우에 따라 모델은 Inotify를 구현해야 합니다.속성이 변경되었습니다.클라이언트를 ICQ용으로 코딩하고 있다고 상상해 주세요.View Model이 당신에게 메시지를 보낸다는 걸 어떻게 알죠?
모델과 뷰 모델의 차이:
ViewModel은 모델의 출력만 단순화합니다.모델이 매우 단순하다면 View Model은 필요하지 않습니다.
언급URL : https://stackoverflow.com/questions/5027562/the-role-of-the-model-in-mvvm
'IT' 카테고리의 다른 글
Excel에서 VBA 어레이에 고유한 값 입력 (0) | 2023.04.13 |
---|---|
셸의 한 줄에 여러 명령어 실행 (0) | 2023.04.13 |
컴파일러 오류:사용자 정의 유형이 정의되지 않았습니다. (0) | 2023.04.13 |
종속성 속성 변경 듣기 (0) | 2023.04.13 |
wpf 응용 프로그램에 이상한 블랙박스가 표시됨 (0) | 2023.04.13 |