반응형
궁금했던것들을 좀 찾아보며 견문을 넓혀야겠다라는 생각이 들었다.
기존 SpringFramework로 개발한것만 생각하면 MVC Model2패턴이 다인가 라는 생각에 검색을 해본적도 있었지만 정리는...ㅎ;
오늘 정리를 좀 해봐야겠다.
1). MVC Model2
- 정의 : Model + View + Controller 세가지를 합친 용어
- Model : App에서 사용되는 데이터 + 데이터를 처리하는 로직을 담당
- View : Client에 보여지는 UI 담당
- Controller : Client의 요청을 받고 반응 처리 담당
- 동작 :
- 사용자의 Action들은 Controller로 보내진다.
- Controller는 사용자의 Action를 확인 => Model을 업데이트
- Controller는 Model을 나타내줄 View를 선택
- View는 Model을 이용하여 화면을 나타낸다.
- 특징 :
- 1개의 Controller가 여러개의 View를 담당하는 1:N 구조
- 장점 :
- 쉽고 단순하다
- 단점 : View와 Model의 의존성이 매우 높다. => App이 커지면 커질수록 복잡함이 느껴질것
2). MVP
- 정의 : Model + View + Presenter 세가지를 합친 용어
- Model : App에서 사용되는 데이터 + 데이터를 처리하는 로직을 담당
- View : Client에 보여지는 UI 담당
- Presenter : View의 요청 정보로 Model에서 데이터를 가공하여 View로 반응 담당
- 동작 :
- 사용자의 Action들은 View로 보내진다.
- View는 데이터를 Presenter에 요청
- Presenter는 Model에게 데이터를 요청
- Model은 Presenter에서 요청받은 데이터를 응답
- Presenter는 View에게 데이터를 응답
- View는 Presenter가 응답한 데이터를 이용하여 화면을 나타낸다.
- 특징 :
- 1개의 Presenter가 1개의 View를 담당하는 1:1 구조
- 장점 :
- Model과 View의 의존성이 사라진다. -> Presenter가 중매를 하기 때문
- 단점 : View와 Presenter 사이의 의존성이 높다. => App이 복잡해질수록 의존성은 더 강해진다.
2). MVVM
- 정의 : Model + View + ViewModel 세가지를 합친 용어
- Model : App에서 사용되는 데이터 + 데이터를 처리하는 로직을 담당
- View : Client에 보여지는 UI 담당
- ViewModel : View를 나타내 주기 위한 Model이자 View를 나타내기 위한 데이터 처리를 담당.
- 동작 :
- 사용자의 Action들은 View로 보내진다.
- View에 Action이 들어오면, Command 패턴으로 View Model에 Action을 전달
- View Model은 Model에게 데이터를 요청
- Model은 View Model에게 요청받은 데이터를 응답
- View Model은 응답 받은 데이터를 가공하여 저장
- View는 View Model과 Data Binding하여 화면을 나타낸다.
- 특징 :
- Command Pattern과 Data Binding Pattern 두가지를 사용하여 구현되어있다.
- 1개의 ViewModel이 N개의 View를 담당하는 1:N 구조
- 장점 :
- Model과 View의 의존성이 사라진다.
- View와 ViewModel 사이의 의존성도 없다.
- 각각 독립적으로 움직이기 때문에 모듈화 개발이 가능 => CommandPattern + Data Binding Pattern 이점
- 단점 : 설계가 복잡하다.
세가지 패턴의 CPU 사용량 및 Ram 사용량 비교
반응형
'Knowledge' 카테고리의 다른 글
[Knowledge] WebStorage(Local Storage/Session Storage) 및 Cookie 개념정리 (0) | 2021.02.08 |
---|---|
[Knowledge] 기본 면접 질문사항들 (0) | 2021.02.01 |
[Knowledge] Transaction이란? 속성 (0) | 2021.01.22 |
[Knowledge] Tomcat 배포시 스케쥴러 중복 실행 해결방안 (0) | 2021.01.06 |
[Node.js] Node.js란? -1 (0) | 2021.01.06 |