[컴] MVP, MVC 차이





다음은 ref. 1 의 이야기중 일부를 정리했다.
------------------------

MVC (Model-View-Controller)


보통의 page 들은 data(Model), UI(View) 그리고 관련된 구성요소(Controller)가 합쳐져서 만들어지는데, 이것을 따로 분리해서 만들게 된 것이다.


1979년 Trygve Reenskaug 가 디자인했고, 이녀석이 좀 더 심도있게 얘기된게 그 유명한 GoF Design Patterns: Elements of Reusable Object-Oriented Software”in 1994 라고 한다.

70년대에 Seperated Presentation 이란 개념이 시작돼서 domain object (사진)와 presentation object (스크린)를 분리하는 용도로 사용되기 시작했다.

The Smalltalk-80 implementaion of MVC 에서 이 개념을 좀 더 심도있게 가져가서 ui 로부터 application logic 을 분리하는 목표를 잡았다. 이렇게 해서 application logic 부분을 추후에 다른 UI 에도 사용할 수 있을 것으로 생각했다.



Model 이라고 알려진 Domain 요소는 UI 와 상관없는 부분들 (View and Controllers)
Presentation 은 View와 Controller 에 의해 다뤄졌다. View 와 Controller 는 개념상 분리였지만 실제로 화면에 보여지는 요소중에 View-Controller 짝이 없는 경우는 없었다.

이 때 Controller 의 역할은 user input 을 다루는 것이었다.(key presses, click events)

Model(data) 이 변경될 때 마다 View 를 변경해주기 위해 Observer Pattern 이 사용되었다.




MVP

MVP 는 MVC 디자인에서 presentation logic 에 좀 더 중점을 준 방법이다.
1990 년대 초반 Taligent 라는 회사에서 시작됐다고 한다.

Presenter 는 view 에서 사용하는 ui business logic 을 갖고 있다.
MVC 와는 다르게, presenter 가 view 를 호출한다.
presenter 는 view 와 분리되어 있고, interface 를 통해 view 에게 얘기한다.

일반적인 구현이 logic 을 거의 담고 있지 않은 view 인 Passive View 를 이용하는 것이다.

presenter 가 중간자로서 중간에서 view 와 model 에게 얘기하는 구조이다.
MVC 에서 Controller 가 하던 역할을 Presenter 가 하는 것이다.

user 의 request 가 오면 그것을 처리해서 다시 user 에게 결과를 보여주는 과정을 이 presenter 가 하게 되는 것이다.
view 에서 data 가 어떻게 보여져야 하는지를 결정하는 것도 presenter 가 한다.
이 passive architecture 에서는 view 가 setters 를 갖고 presenter 가 이를 이용해서 view 화면에 data 를 set 하게 된다.

MVP 의 장점은 view 와 model 을 좀 더 깔끔하게 분리시켜주는 것이다.







References


  1. Understanding MVC And MVP (For JavaScript And Backbone Developers),  Last updated: 16th Jan, 2012.

댓글 없음:

댓글 쓰기