프로그래밍 언어 및 IT 정보/C#

MVVM란 ? 디자인패턴에 대해서

Himer_torr 2021. 9. 14. 09:08
반응형

개발을 공부하다 보면  디자인패턴이라는 말을 많이 들어보셨을 겁니다.

또한 객체 지향 소프트웨어를 공부하고 계신다면, 재사용할 수 있는 객체지향 소프트웨어를 만드는 것은 힘든 공부 중 하나입니다. 설계를 할때는 당장 가지고 있는 문제를 해결할 수 있어야 하지만, 더더욱 중요한건 나중에 생길 수 있는 문제나 추가된 요구사항들도 쉽고 간편하게 수용할 수 있도록 일반적이고 포괄적이어야 합니다 !

여기서 나온 해결 책이 바로 '다지인패턴'이라는 것입니다.

 

즉, 디자인 패턴이란 효율적인 코드를 만들기 위한 방법론 이라고 생각하시면 됩니다.

 

 

오늘은 디자인패턴 중 WPF 에서 사용되는 MVVM 패턴을 공부해보도록 하겠습니다.
(디자인패턴에 대해서는 나중에 한번 글을 올려보도록 할께요 !)

최근에는 안드로이드나 ios개발에서도 많이 유행이지만, MVVM 패턴을 제대로 구현한 프레임워크는 WPF가 최초입니다

(출처 : https://happybono.wordpress.com/2017/10/10/mvvm-i-mvvm-%ED%8C%A8%ED%84%B4%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90/)

위사진은  wpf (C#) 기준으로 MVVM을 간략하게 나온 이미지입니다.


MVVM이란 ?


MVVM이란 Model, View, ViewModel을 줄인 약자입니다.

 

Model : 일종의 Data라고 생각하시면 됩니다. 화면에 관련된 데이터요소와 비지니스 로직을 작성하는 구역입니다!

 

VoewModel : 화면의 동작방식 및 흐름을 표현하는 구역입니다. View를 처리하기 위해 만든 Model이라고 생각하시면 됩니다. View를 나타내 주기 위한 Model이자 View를 나타내기 위한 데이터를 처리하는 구역입니다.

Command를 이용하여 View에서는 Model이 변경될 때 UI에 붙은 이벤트 이름을 변경할 필요가 없어졌습니다.

 

View : 사용자에게 보여지는 구성요소, 디자이너 적인 요소(UI) 구역입니다.

 


MVVM 동작 순서


 

    1.  사용자의 Action들은 View를 통해 들어 오게됩니다.

    2.  View에 Action이 들어오면, Command 패턴으로 View Model에 전달하게 되어집니다.

    3.  View Model은 Model들에게 데이터를 요청합니다.

    4.  Model은 View Model에게 요청받은 데이터들을 응답하고 가공하여 저장합니다.

    5.  View는 View Model과 Data Binding하여 화면을 나타냅니다.

       너무 간단하고 멋진 플로우 아닌가요~?


MVVM의 장점과 단점


 

- 장점

   1. View와의 Model의 의존성을 완벽히 분리  할 수 있기때문에 독립성을 유지할 수 있다.

   2. 독립성을 유지하기 때문에 효율적인 유닛테스트가 가능합니다.

   3. View와 ViewModel을 바인딩하기 때문에 코드의 양이 굉장히 줄어듭니다.

   4. View와 ViewModel의 관계는 N:1 입니다.

 

 의존성이 없어지면 각각 부분이 독립적이기 때문에 모듈화 하여 개발할 수 있습니다.

 

- 단점

   1. 간단한 UI에서 오히려 ViewModel을 설계하는 어려움이 있습니다.

   2. 데이터 바인딩이 필수적으로 요구됩니다.

   3. 복잡할수록 Controller처럼 ViewModel이 비대해집니다.

   4. 표준화된 틀이 존재하지 않아 사람마다 이해가 다릅니다.

 

ViewModel의 설계가 쉽지않고 데이터 바인딩 기법을 통해 View를 바꿀 때 많은 코드의 작성이 필요하여

간단한 View나 로직을 만들때에도 일에 비해 많은 코드의 작성을 해야합니다 

 

 

 

오늘은 MVVM에 대해서 알아봤습니다 :)

어떤 디자인 패턴이던 아키텍처별로 장단점이 분명 존재합니다. 

이게 좋다 !  이게 안좋다 ! 라는 정답은 없습니다.

여러 디자인 패턴들을 보시면서 자신의  개발 스펙, 기획 , 프로젝트 규모등등 고려하면서 

사용하신다면 굉장한 시너지를 낼 것입니다 !

아래 링크는 MSDN에서 WPF의 MVVM에 대해 설명한 링크입니다.

전 어떤 걸 찾으 실때 MSDN을 먼저 확인해보라고 추천드리고싶습니다.

오늘도 긴 글 읽어 주셔서 감사합니다 ! 혹시 궁금한 사항이나 문제점이 있다면 댓글 달아주세요 !

공감도 꾸욱....

 

https://docs.microsoft.com/en-us/archive/msdn-magazine/2009/february/patterns-wpf-apps-with-the-model-view-viewmodel-design-pattern

 

Patterns - WPF Apps With The Model-View-ViewModel Design Pattern

12/08/2016 33 minutes to read In this article --> February 2009 Volume 24 Number 02 Patterns - WPF Apps With The Model-View-ViewModel Design Pattern By Josh Smith | February 2009 There are popular design patterns that can help to tame this unwieldy beast,

docs.microsoft.com

 

반응형