'software architecture'에 해당되는 글 1건

  1. 2019.02.20 프로그래밍 이야기2 - MVVM 패턴 (Model-View-Viewmodel)





WPF 로 프로그램 개발을 시작하려면 MVVM 패턴이란 이야기를 들으실 수 있으실 겁니다.

'WPF를 쓰려면 MVVM 패턴으로~' 라는 식으로 말입니다.


하지만 WPF 책을 구매하더라도 MVVM 에 관한 이야기는 없습니다.

MVVM 패턴은 소프트웨어 설계할 때 말하는 Design pattern 의 한 종류로 MVC(Model-View-Controller)나 MVP(Model-View-Presenter) 패턴과 비슷하다고 보시면 됩니다.

(MVC: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller)

(MVP: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter)


간단하게 말하면 프로그램에 사용되는 Model(Data나 Data관련 로직)과 UI를 뜻하는 View, 그리고 동작을 처리하는 Controller/Presenter/Viewmodel 등으로 구분하여 프로그램을 작성 구현하자 입니다.


사용하는 이유는 이렇게 설계 패턴을 정의함으로써 프로그램 구현 중에 발생되는 모순들을 최소화 하고 코드 재사용성을 높이기 위해 사용한다고 보시면 됩니다.


비슷하지만 다르게 말하는 이유는 서로간의 관계에 대해 느슨한지 끈끈한지 등의 관계 정의 차이들이 있어서 인데 각각의 장단점들이 있고, 개발하는 플랫폼에 따라 많이 사용하는 방법들이 있다고 생각하시면 됩니다.


MVVM은 그 중에서 WPF, SilverLight 에서 많이 사용하는 방식으로 Command 패턴과 데이터 바인딩을 사용하여

View와 Viewmodel 사이의 의존성을 낮춘 패턴입니다.



좀더 쉽게 말하면 View에서 사용되는 Data, Command, Event 가 모두 Viewmodel의 Property 로 Binding 되어 있고, 

View를 구성하는데 필요한 data 들은 Model 이 가지고 있어 

Viewmodel 은 관련된 동작등을 처리하여 Model을 업데이트 후 View에 PropertyChange가 발생되었다는 것을 알려주면 

View가 갱신되는 구조로 되어있다고 생각하시면 됩니다.


View 와 ViewModel 을 느슨하게 연결하고, View 의 역할을 UI에 국한되게 함으로써

디자이너와 개발자간의 바인되는 명만을 약속함으로써 

View(UI)는 Blend 를 사용하여 디자이너가 직접 디자인하고 개발자는 View 부분의 작업을 최소화 하는 아름다운 구조를 제안하였지만, 

디자이너들이 Photoshop/Illustrator가 아닌 Blend를 사용할리가 없기 때문에 

그냥 View 까지 모두 작성하시면 됩니다.


[ Blend for Visual Studio 2017 ]




Posted by 소프트장
,