IT

MVVM에서 모델의 역할

itgroup 2023. 4. 13. 20:46
반응형

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

반응형