관리 메뉴

개발자의 코드 노트

MVVM 디자인 패턴에 대해서 본문

프로그래밍/NET Framework

MVVM 디자인 패턴에 대해서

IODES 2015. 11. 26. 03:55

MVVM 패턴에 대해서 공부하면서, 관련 내용을 정리해보았습니다.

부족하거나 잘못 된 부분은, 댓글등으로 알려주시면 정정하도록 하겠습니다.



MVVM 패턴은 무엇인가?





이미지 참고 : https://msdn.microsoft.com/ko-kr/library/hh848246.aspx

 

 

MVVM은 Model-View-ViewModel의 줄임말로,

애플리케이션 로직과 사용자 인터페이스의 완벽한 분리를 위해 설계되었습니다.


View 클래스는 단순히 사용자 인터페이스를 표시하기 위한 로직만을 담당하며, 본 클래스의 가장 이상적인 형태로는 내부에 오로지 InitializeComponent() 메소드를 호출하는 생성자만 존재하는겁니다. 물론, XAML에서 표현하기 어려운 일부 애니메이션이나 효과, 또는 컨트롤의 비주얼 제어등의 사용자 인터페이스 로직은 포함될 수 있으며, 코드상에서 내부적으로 구현된 컨트롤에 대한 직접적인 참조를 요청할 수 있습니다.


ViewModel 클래스는 View가 바인딩 할 수 있는 프로퍼티와 커멘드를 담당하며, 비동기 서비스의 전송 상태 여부나, 데이터의 일관성을 유지하기 위한 유효성 검사와 같이, View를 위한 부가적인 프로퍼티나 로직을 작성할 수 있습니다. 하지만 View와는 다르게, View에 대한 직접적인 참조나 사용자 인터페이스 로직 구현을 포함하고 있을 수 없으며, 본 클래스는 일반적으로 INotifyPropertyChanged 및 INotifyCollectionChanged 인터페이스를 통해 프로퍼티 및 컬렉션의 변경 통지를 받아 데이터를 적절히 변환 및 가공 후 View에 상태 변경을 통지하고 View와 Model 사이의 상호 작용을 조직화하는 역할을 합니다.


Model 클래스는 응용 프로그램의 데이터 및 비즈니스 로직을 담당하며, View또는 ViewModel 클래스와의 직접적인 참조나 종속성을 가지지 않습니다. 데이터 접근 또는 외부 서비스 연결등과 같은 로직들이 여기에 포함 될 수 있으며, 본 클래스는 일반적으로 INotifyPropertyChanged 및 INotifyCollectionChanged 인터페이스를 통해 프로퍼티 및 컬렉션의 변경 통지를 제공하여, ViewModel이 작업 결과를 통지받음으로써 View가 간편하게 데이터를 바인딩 할 수 있도록 도와주는 역할을 합니다.




왜 MVVM 패턴을 사용해야 하는가?


  1. 사용자 인터페이스와 응용 프로그램 로직의 완벽한 분리
    -> 코드 재사용의 기회를 늘리고 유지 보수의 편리성을 향상시킵니다.

  2. XAML 레이아웃에 가장 최적화된 디자인 패턴
    -> WPF / Silverlight 등의 핵심 기능들을 활용하기 위해 최적화되어있습니다.

  3. 디자이너의 작업 편의성 향상
    -> 레이아웃이 코드와 결합되지 않아, 디자이너의 작업 편의성을 향상시킵니다.


다음 시간에는...


다음 시간에는, 실제로 어떻게 MVVM 패턴으로 프로그램을 작성하는지,
C#으로 샘플 프로그램을 작성하는 글을 포스팅 하도록 하겠습니다.

감사합니다.
Comments