TIL(Today I Learned)

12월 29일(목)

공부한 내용을 제 언어로 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.

아키텍처 패턴

  • 소프트웨어 상에서 비슷한 문제를 해결하기 위한 솔루션 (위키 정의… 너무 일반화된 정의 같다.)
  • 소프트웨어 구조 (구조라는 단어가 좋은 비유일것 같긴한데, 그래도 확 와닿지는 않는듯)
  • 모듈의 역할, 관심사(?)에 따라 기능, 코드를 분리하는 규칙 (내가 생각하는 아키텍처란 무엇인가)

MVC

  • Controller가 Model과 View 사이를 중재
  • Model과 View의 의존성이 강한데, Model의 변화에 따라 View를 갱신해주어야 하기 때문
  • 한 화면에 여러 뷰가 배치되고, 뷰마다 여러 모델의 데이터를 보여줄 경우, 컨트롤러에서 모델의 변화에 따라 뷰를 업데이트 해주어야 하는 등 뷰와 모델의 의존성이 높음과 컨트롤러가 비대해진다는 문제가 있음

MVP

  • MVC의 문제점인 Model과 View가 서로 의존성이 높다는 것을 해결하기 위해 MVP 등장
  • Presenter가 View와 Model사이를 중재
  • Presenter와 View의 관계가 1:1
  • Presenter와 View의 의존성이 높다는 단점이 있고, View가 많아지면 그만큼 Presenter도 많아진다는 단점이 있음

MVVM

  • MVP의 문제점인 Presenter와 View의 의존성을 해결하기 위해 나온 것이 MVVM
  • MVP처럼 View와 Model의 의존성을 없애면서 View와 ViewModel의 의존성을 낮춤
  • View에서 필요한 데이터를 ViewModel에 데이터 바인딩 함으로써 View와 ViewModel의 의존성을 낮춤

참고