Learn/Architecture

[Design Pattern] MVC Pattern

push and sleep 2022. 9. 25. 20:46

# 개요

Model-View-Control Pattern

  • Model - application object
  • View - UI 
  • Controller - UI가 사용자의 입력에 어떻게 반응하는지

여러 디자인 패턴들이 적용된 Compound Pattern

 

# 구조

View와 Controller(UI)는 API를 통해 Model(Non-UI)에 접근할 수 있다. 

 

Non-UI는 UI를 잘 알지 못하게 한다.

  • 같은 데이터로도 여러 UI가 있을 수 있으므로 Non-UI에 비해 UI가 많다. 
  • UI쪽이 변화가 있을 때 마다 Non-UI가 영향을 받으면 변경이 너무 잦게 된다. 

점선은 실선보다 커플링이 약한 상태를 의미한다. 

 

# Patterns in MVC

Observer pattern (Model - View)

  • 모델과 뷰 간의 디커플링을 해결하기 위해 사용
  • publisher가 subscriber에 대해 알지 않아도 됨

Composite pattern (View - View)

  • 위젯의 경우 계층적인 구조를 가지는 경우가 많음. (View)
  • 계층의 구조와 상관없이 오브젝트를 다루는데 좋은 패턴

Strategy pattern (Controller - View)

  • View는 자신에게 들어온 일을 직접 처리하는게 아니라 다른 객체에게 위임해서 해결함
  • View는 context 객체에 해당하고 Controller는 특정한 Concrete 전략 객체가 된다. 

 

이 외에 Factory나 Decorator pattern도 사용한다.