복합 패턴 (Compound Pattern)

seunghyun lee·2022년 7월 30일
0

Computer Science

목록 보기
17/19
post-thumbnail

컴파운드 패턴

  • 반복적으로 생길 수 있는 일반적인 문제를 두 개 이상의 패턴을 결합해서 해결하는 디자인 패턴
  • 다만, 패턴 몇 개를 결합해서 쓴다고 무조건 컴파운드 패턴이 되는 것은 아니다.
  • 컴파운드 패턴이라 불릴 수 있으려면 여러 가지 문제를 해결하기 위한 용도로 쓰일 수 있는 일반적인 해결책 이어야 한다.
  • 웹에서 벌어지는 다양한 요청과 이에 대응하는 로직을 처리하고 결과를 브라우저로 보여주기 위한 MVC 패턴이 대표적이다.

MVC => Model - View - Controller
MVP => Model - View - Presenter
MVVM => Model - View - ViewModel

MVC 패턴

  • MVC 패턴은 컴파운드 패턴의 대표적인 예시이다.
  • Model-View-Controller 3개의 컴포넌트로 하나의 애플리케이션을 구성한다.
  • 애플리케이션의 유지보수성, 확장성, 그리고 유연성을 증가시킨다.
  • Controller : 입력이 들어옴
  • View-Controller 관계는 One-to-Many(일대다 관계)거나 Many-to-Many(다대다)이다.
  • View 는 Controller 의 존재를 모른다. (=Controller 가 원하는 View 를 선택)View 는 + MVC 패턴의 경우에는 규모가 커질수록 Controller 가 커진다.
  • Controller 가 다수의 View 를 선택할 수 있듯이 하는 일이 너무 많아질 수 있다.
  • 많은 패턴으로 인해, 복잡성이 증가함에 따른 문제점들이 발생한다.

MVP 패턴

  • View: 입력이 들어옴
  • View-Presenter 는 One-to-One(일대일) 관계이다.
  • Presenter 는 Model 을 업데이트하고, 원하는 데이터를 가져온다.
  • View와 Model 은 오로지 Presenter 에 의해서만 상호작용한다.
  • 따라서 View-Model 관계는 분리되었지만, View-Presenter 관계는 서로 강하게 의존한다.
  • View-Presenter 일대일 관계로 인해, 각 View 를 위한 각 Presenter 가 필요하다
  • 코드의 수가 상당히 증가하게 된다.

MVVM 패턴

  • View: 입력이 들어옴
  • View-ViewModel는 One-to-Many 관계이다.
  • ViewModel 은 Model 을 업데이트한다.

참조:
1. https://spiralmoon.tistory.com/entry/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EB%B3%B5%ED%95%A9%EC%B2%B4-%ED%8C%A8%ED%84%B4-Composite-pattern
2. https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8F%AC%EC%A7%80%ED%8A%B8_%ED%8C%A8%ED%84%B4
3. https://haeng-on.tistory.com/109
4 .https://mygumi.tistory.com/304?category=721096
5. https://thefif19wlsvy.tistory.com/48

0개의 댓글