EMDI는 지금도 개발중

Spring에서 사용하는 MVC패턴 본문

IT/잡다한지식

Spring에서 사용하는 MVC패턴

EMDI 2020. 3. 27. 21:51

1. MVC( Model - View - Controller)

MVC는 MVP, MVVM보다 훨씬 전에 나온 모델로, Model, View, Controller 각각에 대한 역할을 구분하여 독립적인 기능을 수행하도록 설계되었다.

간단히 스토리텔링식으로 설명하자면,

1) User가 검색을 요청(Request)한다.

2) Dispatcher가 User의 요청을 받고 그것을 Controller에게 전달

3) 요청(Request)을 받은 Controller는 그것을 Model한다

4) Model을 한 것을 User가 볼 수 있도록 View로 만든다

5) 완성된 View를 User가 본다

 

이렇게 MVC에서 View는 보여주기 위한 출력형식

모든 이벤트나 제어 가공부분은 Controller에 의해 처리된다.

Controller는 처리해야할 이벤트에 대해 Model을 조작하고 그 변경사항을 표하실 View를 선택한다

View는 항상 Model을 참조해야하기 때문에 View - Model간의 의존성이 생긴다

장점

- 3가지 패턴 중 구현에 있어서 가장 심플하다

단점

- View와 Model 간의 의존성이 있다

- 프로그램이 커질수록 가독성이 떨어지고 유지보수가 힘들어진다

 

2) MVP( Model - View - Presenter )

그 다음 MVC의 Model과 View간의 의존성 문제를 해결하기 위해 설계된 MVP

MVC패턴에서는 Controller가 이벤트 처리만 하고 View를 업데이트 하는 것에 영향을 미치지 않는 것과 달리,

MVP의 Presenter는 모델을 조작한 결과를 다시 돌려받아서 직접 View를 업데이트 시킨다.

따라서 Model과 View의 연결고리는 Presenter를 통해서만 이루어진다

전에 MVC는 Model과 View 사이에서 작업되었는데 그 사이에 Presenter라는 것이 끼었다고 생각하면 된다

장점

- Model과 View의 의존성이 사라짐

- Model은 Presenter의 요청에만 수행하면 되므로 다른 요소와의 상호작용에 대해 신경쓸 필요가 없다

단점

- Presenter와 View간의 의존성이 크다

- MVC에 비해 필요한 Class 수가 증가

 

MVP로 인해 Model과 View의 의존성이 완전히 사라졌다고하지만, 그만큼 Presenter와 View간의 의존성이 또 생기게 되는 단점이 있다.

그리고 MVC에 비해 필요한 Class 수가 증가됨으로써 개인적으로 딱히 뭐가 나아졌다는 것인지 이해가 안간다

Comments