MVC, MVP, MVVM패턴들은 UI와 로직의 분리가 목적인 패턴들이다.
불필요한 종속 관계를 줄이는 패턴으로 아키텍쳐 패턴이라고도 불린다.
결과적으로 최종 목표는 스타게티 코드가 되는 것을 방지하는 것이다.
소개는 넘어가고 그래서 이게 뭐냐 하나씩 알아보자.
MVC( Model View Controller)
MVC는 소프트웨어의 논리적 부분을 데이터와 프레젠테이션에서 분리하여, 불필요한 종속성과 스파게티 코드를 줄일 수 있다.
결국 각 레이어의 기능을 제한하여 단일책임원칙을 지킬 수 있게 된다.
M => 모델: 어플리케이션 데이터를 관리하는 역할
V => 뷰: 데이터를 사용자에게 표시하는 역할(UI라고도 할 수 있음)
C => 컨트롤러: 입력 및 로직을 처리하는 역할
한계도 존재한다.
View(UI) 자체는 문제가 없지만(UI Toolkit,UnityUI등을사용) , 모델 데이터의 변경 사항을 수신하기 위해서는 뷰 별로 코드가 필요하다는 것이다.
그래서 유니티에서는 보통 MVC보다는 MVP모델을 주로 사용한다.
MVP(Model View Presenter)
M => 모델:
V => 뷰:
P => 프레젠터:
MVVM( Model View ViewModel)
위에 있는 MVP를 조금 더 발전시킨 형태로 Presenter와 View의 의존성을 더 옅게 만든 모델이라고 생각하면 될 거 같다.
주요 특징으로는 데이터 바인딩이다.
뷰와 뷰모델 간의 데이터 바인딩을 통해 뷰모델 속성 변경이 자동으로 뷰에 반영되도록 한 것.
MVVM은 프레임워크의 의존을 많이 받는데 데이터바인딩을 지원하는 시스템이면 가능하지만 안될수도 있고 뭐 하다.
하지만! 유니티6부터는 데이터 바인딩을 지원한다고 한다. 바로 유니티6로 넘어가자.
마지막으로 왼쪽부터 MVC, MVP, MVVM이다 사진으로 보며 마무리해보자.
