⛳️ MVC, MVP, MVVM 패턴
📌 디자인 패턴이란?
디자인 패턴은 애플리케이션내에서 각자 역할에 맞는 코드끼리 분리하여 유지보수성을 높이고 탄탄한 구조를 가진 애플리케이션을 설계할 수 있다.
✏️ 디자인 패턴 장점
- 검증된 해결책
디자인 패턴은 소프트웨어 개발의 문제를 해결하는 확실한 접근 방식을 제공한다.
- 쉬운 재사용
일반적으로 필요에 따라 조정가능하며 즉시 사용가능한 솔루션을 반영한다.
이외의 사소한 문제를 예방할 수 있고 반복을 피하여 파일 크기를 줄일 수 있으며, 개발자간의 소통을 원할하게 하는 장점이 있다.
🛤 MVC 패턴
Model + View + Controller를 합친 용어이다.
- Model : 데이터와 데이터 변경 함수 관리하는 부분
- View : 사용자에게 보여지는 UI
- Controller : 사용자의 입력을 받고 처리하는 부분
동작
- 사용자 액션이 들어오면 컨트롤러가 액션 확인하고 모델을 업데이트한다.
- 컨트롤러는 모델을 나타낼 뷰를 선택한다.
- 뷰는 모델을 이용하여 화면에 나타낸다.
1 | 참고 - MVC에서 View가 업데이트 되는 방법 |
polling이란?
하나의 장치가 충돌 회피 또는 동기화를 목적으로 다른 장치의 상태를 주기적으로 검사하여 일정 조건을 만족할 때, 송수신 자료를 처리하는 방식
특징
- 컨트롤러는 여러 개의 뷰를 선택할 수 있는 1:n 구조
- 보편적이며 단순하다.
- 뷰와 모델 사이의 의존성이 높다. (bad~👎)
🏸 MVP 패턴
Model + View + Presenter를 합친 용어이다.
- Model : 데이터와 데이터 변경 함수 관리하는 부분
- View : 사용자에게 보여지는 UI
- Presenter : 뷰에서 요청한 정보로 모델을 가공하여 뷰에게 전달해주는 부분(View, Model을 붙여주는 접착제역할)
동작
- 사용자 액션은 뷰를 통해 들어온다.
- 뷰는 프레젠터에게 데이터를 요청한다.
- 프레젠터는 모델에게 데이터 요청한다.
- 모델은 프레젠터에게 요청받은 데이터를 응답한다.
- 프레젠터는 뷰에게 데이터를 응답한다.
- 뷰가 응답받은 데이터를 화면에 나타낸다.
특징
- 프레젠터는 뷰와 모델의 인스턴스를 가지고 있어 둘을 연결하는 접착제 역할
- 프레젠터와 뷰는 1:1
- 뷰와 모델간의 의존성이 없다. (Good~👍)
- 하지만 뷰와 프레젠터의 의존성 높다.
👑 MVVM 패턴
Model + View + View Model을 합친 용어이다.
- Model : 데이터와 데이터 변경 함수 관리하는 부분
- View : 사용자에게 보여지는 UI
- View Model : 뷰를 표현하기 위해 만든 뷰를 위한 모델
동작
- 사용자 액션이 뷰를 통해 들어온다.
- 뷰에 액션이 들어오면 Command 패턴으로 뷰 모델에 액션을 전달한다.
- 뷰 모델은 모델에게 데이터를 요청한다.
- 모델은 뷰 모델에게 요청받은 데이터를 응답한다.
- 뷰 모델은 응답받은 데이터를 가공하여 저장한다.
- 뷰는 뷰 모델과 데이터 바인딩하여 화면에 나타낸다.
특징
- Command 패턴과 데이터 바인딩 두가지 패턴을 사용(뷰와 뷰 모델 사이의 의존성 제거)
- 뷰 모델과 뷰는 1:n
- 뷰와 모델사이의 의존성도 없으므로 각 부분은 독립적으로 모듈화하여 개발할 수 있다.
- 뷰 모델 설계가 어렵다.
Command패턴이란?
요청을 객체 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 사용할 수 있도록 메서드명, 매개변수 등 요청에 필요한 정보를 저장,로깅, 취소하는 패턴이다.
참고