📌 디자인 패턴이란?

디자인 패턴은 애플리케이션내에서 각자 역할에 맞는 코드끼리 분리하여 유지보수성을 높이고 탄탄한 구조를 가진 애플리케이션을 설계할 수 있다.

✏️ 디자인 패턴 장점

  1. 검증된 해결책

디자인 패턴은 소프트웨어 개발의 문제를 해결하는 확실한 접근 방식을 제공한다.

  1. 쉬운 재사용

일반적으로 필요에 따라 조정가능하며 즉시 사용가능한 솔루션을 반영한다.

다만, 디자인 패턴이 모든 문제의 해결책은 아니다. 패턴의 역할은 솔루션 체계를 제공하고 이를 지원하는 역할을 한다.

이외의 사소한 문제를 예방할 수 있고 반복을 피하여 파일 크기를 줄일 수 있으며, 개발자간의 소통을 원할하게 하는 장점이 있다.

🛤 MVC 패턴

Model + View + Controller를 합친 용어이다.

mvc

  • Model : 데이터와 데이터 변경 함수 관리하는 부분
  • View : 사용자에게 보여지는 UI
  • Controller : 사용자의 입력을 받고 처리하는 부분

동작

  1. 사용자 액션이 들어오면 컨트롤러가 액션 확인하고 모델을 업데이트한다.
  2. 컨트롤러는 모델을 나타낼 뷰를 선택한다.
  3. 뷰는 모델을 이용하여 화면에 나타낸다.
1
2
3
4
참고 - MVC에서 View가 업데이트 되는 방법
- 뷰가 모델을 이용하여 직접 업데이트
- 모델이 뷰에게 알림을 주어 업데이트
- 뷰가 Polling으로 모델의 변경을 주기적으로 감지하여 업데이트

polling이란?

하나의 장치가 충돌 회피 또는 동기화를 목적으로 다른 장치의 상태를 주기적으로 검사하여 일정 조건을 만족할 때, 송수신 자료를 처리하는 방식


특징

  • 컨트롤러는 여러 개의 뷰를 선택할 수 있는 1:n 구조
  • 보편적이며 단순하다.
  • 뷰와 모델 사이의 의존성이 높다. (bad~👎)

🏸 MVP 패턴

Model + View + Presenter를 합친 용어이다.

mvp

  • Model : 데이터와 데이터 변경 함수 관리하는 부분
  • View : 사용자에게 보여지는 UI
  • Presenter : 뷰에서 요청한 정보로 모델을 가공하여 뷰에게 전달해주는 부분(View, Model을 붙여주는 접착제역할)

동작

  1. 사용자 액션은 뷰를 통해 들어온다.
  2. 뷰는 프레젠터에게 데이터를 요청한다.
  3. 프레젠터는 모델에게 데이터 요청한다.
  4. 모델은 프레젠터에게 요청받은 데이터를 응답한다.
  5. 프레젠터는 뷰에게 데이터를 응답한다.
  6. 뷰가 응답받은 데이터를 화면에 나타낸다.

특징

  • 프레젠터는 뷰와 모델의 인스턴스를 가지고 있어 둘을 연결하는 접착제 역할
  • 프레젠터와 뷰는 1:1
  • 뷰와 모델간의 의존성이 없다. (Good~👍)
  • 하지만 뷰와 프레젠터의 의존성 높다.

👑 MVVM 패턴

Model + View + View Model을 합친 용어이다.

mvvm

  • Model : 데이터와 데이터 변경 함수 관리하는 부분
  • View : 사용자에게 보여지는 UI
  • View Model : 뷰를 표현하기 위해 만든 뷰를 위한 모델

동작

  1. 사용자 액션이 뷰를 통해 들어온다.
  2. 뷰에 액션이 들어오면 Command 패턴으로 뷰 모델에 액션을 전달한다.
  3. 뷰 모델은 모델에게 데이터를 요청한다.
  4. 모델은 뷰 모델에게 요청받은 데이터를 응답한다.
  5. 뷰 모델은 응답받은 데이터를 가공하여 저장한다.
  6. 뷰는 뷰 모델과 데이터 바인딩하여 화면에 나타낸다.

특징

  • Command 패턴과 데이터 바인딩 두가지 패턴을 사용(뷰와 뷰 모델 사이의 의존성 제거)
  • 뷰 모델과 뷰는 1:n
  • 뷰와 모델사이의 의존성도 없으므로 각 부분은 독립적으로 모듈화하여 개발할 수 있다.
  • 뷰 모델 설계가 어렵다.

Command패턴이란?

요청을 객체 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 사용할 수 있도록 메서드명, 매개변수 등 요청에 필요한 정보를 저장,로깅, 취소하는 패턴이다.


참고

[디자인패턴]MVC,MVP,MVVM 패턴 비교