컴퓨터 공학의 기초 지식으로 디자인 패턴이 있다고 한다.
먼저, 디자인패턴이란 소프트웨어의 개발 방법을 형식화한 것을 말한다. 건축을 할 때는 어떠한 공법을 사용해서 진행하는 것과 같다. 같은 방식으로 개발을 하게 되면 문제가 발생했을 경우, 빠르게 대응할 수 있다. 같은 방식을 써서, 그 안에서 발생하는 여러 해결책을 패턴화하여 개발의 속도를 높일 수 있기 때문에 디자인 패턴을 사용한다.
Model-View-Controller의 약자로, 가장 기본적인 디자인 패턴이다.
Model : 애플리케이션에서 사용되는 데이터 및 데이터를 처리하는 부분.
View : 사용자에게 보여지는 UI 부분
Controller : 사용자의 Action(입력)을 받아 처리하는 부분
MVC는 다음의 순서대로 동작한다.
요약 : 사용자가 Controller를 통해 Model을 바꾸면, Model을 토대로 View가 업데이트 된다.
MVC의 장단점
장점 : 가장 기본적이고 단순한 패턴으로 널리 사용된다.
단점 : View의 UI 업데이트를 반영하기 위해 Model을 참조하므로 의존성이 높다.
Model-View-Presenter로 MVC와 거의 같으나, Controller 대신 Presenter가 있다. MVC의 단점을 보완하고자 나왔다.
Model : 애플리케이션에서 사용되는 데이터 및 데이터를 처리하는 부분.
View : 사용자에게 보여지는 UI 부분
Presenter : Controller가 기존에 했던 역할을 대신한다. 사용자로부터의 모든 입력값을 수집하여 Model에 전달하고, 그 결과를 다시 View에 전달한다. 즉, Model과 View를 이어준다.
MVP는 다음의 순서대로 동작한다.
요약 : 사용자의 입력 값을 Presenter가 받고 이를 Model에 보내준다. 그리고 업데이트된 Model을 다시 View에 전달한다.
MVP의 장단점
장점 : View와 Model의 의존성을 해결하였다.
단점 : 하지만 다시 View와 Presenter 사이의 의존성이 높아졌다.
Modle-View-View Model의 약자이다.
Model : 애플리케이션에서 사용되는 데이터 및 데이터를 처리하는 부분.
View : 사용자에게 보여지는 UI 부분
View Model : MVC의 Cotroller와 MVP의 Presenter와 같은 역할을 한다. View를 나타내기 위한 Model로, View를 나타내기 위한 Model이면서 View를 나타내기 위한 데이터를 처리하는 부분.
MVVM은 다음의 순서대로 동작한다.
요약 : 사용자 입력값을 View가 받아 View Model에 전달하면 View Model이 Model로부터 데이터를 받아 업데이트하여 View에 전달한다.
MVVM의 장단점
장점 : Command 패턴과 Data Binding 두 가지 패턴을 사용하여 구현되었기 때문에 View와 View Model 사이의 의존성을 없앴다.
단점 : 하지만 View Model 설계가 어렵다.
*Command 패턴 : 요청을 객체로 캡슐화하여 사용자가 보낸 요청을 나중에도 이용할 수 있도록 메서드 이름, 매개변수 등 요청에 필요한 정보를 저장, 로깅, 취소할 수 있는 패턴.