MVC패턴과 MVVM패턴은 똑같은 소프트웨어 디자인 패턴이지만, 자세히 분류하면 다른 패턴의 종류라고 볼 수 있는데 먼저 소프트웨어 패턴에 대해서 확인해보자 :)
싱글턴패턴은 생성패턴으로 분류되며, MVC패턴, MVVM패턴은 아키텍쳐 패턴에 분류된다.
🔸 Model
: 데이터베이스 테이블에 해당한다. 순수한 데이터로서 DB의 역할을 하거나 DB에 데이터를 요청해서 원하는 데이터를 받는역할을 한다. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야하고, View나 Controller에 대한 정보는 알 수 없다.
🔸 View
: Controller로 데이터를 받아서 html로 표현한다. 데이터를 따로보관하지않고 처리한다. 즉 화면에 나타내는 역할을 한다.
🔸 Controller
: 사용자가 접근한 URl에 따라서 사용자의 요청사항을 파악한 우에 그 요청에 맞는 데이터를 Model에 의뢰하고, Model에서 받은 데이터를 View에 반영하여 사용자게에 알려주는 역할을 한다.
서로 분리해서 각자의 역할에만 집중하여 개발 할 수 있게한다.
유지보수하기에도 용이하고 어플리케이션의 확장성과 유연성이 증가하며 중복된 코딩의 발생여부 또한 쉽게 해결 할 수 있다.
분리되어있기에 클래스가 더 많이 필요하여 복잡해질 수 있다는 단점이있다. 그래서 설계시간이 오래걸릴 수 있다. 또한 Model과 View과 완전히 분리될 수는 없기에 패턴이 모호해지며 변형이 올 수도 있다.
이러한 한계를 보완하기 위해 나온것이 MVVM패턴이다. 함께 알아보자
Google의 Angular JS
, PHP의 CODEIGNITER
, Python의 django
, Facebook의 React
등을 예로 들 수 있다
🔸 View Model
: View를 표헌하기 위해서 만든 Model이자, View를 나타내기 위한 데이터를 처리하는 부분이다.
Commend 패턴
과 Data Binding 패턴
두가지 패턴을 사용하여 구현되었으며,
Commend 패턴
과 Data Binding 패턴
을 이용하여 View와 View Model사이의 의존성을 없앴다. View Model과 View는 1:n 관계라는 것 또한 MVVM패턴의 특징이 될 수 있다.
위에서 말했던 특징처럼 View와 View Model사이의 의존성이 없다. 각각의 부분이 독립적이기에 모듈화하여 개발이 가능하다.
View Model의 설계자체가 쉽지않다.
📚