포스트

MVVM 패턴이란?

CommunityToolkit.Mvvm

MVVM 패턴이란?

WPF 프로젝트를 사용한다면 MVVM 을 한 번쯤은 들어보지 않았을까?

MVVM 패턴이란?

MVVMModel - View - ViewModel 의 약자 UI 코드와 비즈니스 로직을 깔끔하게 분리하기 위해 만들어진 소프트웨어 디자인 패턴

구성 요소역할
Model데이터와 비즈니스 로직 담당. 데이터베이스, API 통신 등 실제 ‘정보’를 다루는 부분
View화면에 보이는 부분. (XAML 파일 등) UI 만 신경 씀. 로직을 몰라야 함.
ViewModelView 와 Model 을 연결하는 중간다리. 데이터 바인딩, 커맨트 처리 등을 맡음.

왜 MVVM을 쓰냐?

이유설명
코드 깔끔UI 코드와 로직 코드가 분리되어 유지보수가 쉬워짐
테스트 용이ViewModel 은 UI 없이 단독 테스트 가능
재사용성ViewModel 은 여러 View 에서 재사용 가능
생산성 향상바인딩만 설정하면, 값 변경이 UI에 자동 반영

MVVM 기본 문제

MVVM 패턴 자체는 좋은 구조지만, 직접 구현하면 반복 작업이 많다.

  • INotifyPropertyChanged 매번 수동으로 작성해야함
  • 커맨드(ICommand)도 매번 새로 만들어야 함
  • ViewModel 생성자에 Depedency Injection 을 붙일 때 코드가 복잡해짐
    => 매번 똑같은 코드 반복, 귀찮고 실수하기 쉬움

Community Tookit 은 이걸 “자동화” 해줌

C# 은 Nuget Pacakge 가 정말 편리한데, 역시 MVVM 패턴을 편리하게 사용하게 해주는 Nuget Package 도 존재한다. 여러가지가 있지만 그 중 나는 Community Toolkit 을 사용한다.

CommunityToolkit.Mvvm 은 마이크로소프트 공식 라이브러리 라서 믿고 사용한다.

주요 기능:

기능설명
ObservableObjectINotifyPropertyChanged 를 자동 처리
[ObservableProperty]필드만 만들면 자동으로 프로퍼티 생성
RelayCommand커맨들 만들 때 ICommand 직접 구현 필요 없음
ObservableValidatorValidation (유효성 검사) 지원)
Dependency Injection 지원ViewModel 생성자 주입을 간편하게 처리

그래서 MVVM 패턴이 뭐라고…? 😥

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.