본문 바로가기

💻 개발IT/Design Patterns

6. Compound 패턴 - MVC Pattern

Compound Pattern

여러 다른 디자인 패턴들이 결합된 패턴

 

 

MVC Pattern (Model-View-Controller Pattern)

Compound Pattern으로 대표적으로 Strategy, Observer, Composite pattern 등이 결합된다.

  • Strategy Pattern
    View는 자기에게 들어온 request를 Controller에게 위임한다.
  • Observer Pattern
    Model은 View, Controller를 직접 알지 않지만 Model은 Observer Pattern처럼 Notification을 해준다.
    (왜냐하면 UI Layer는 자주 변하는데 Non-UI Layer가 UI Layer를 알고 있다면(그 반대는 Non-UI Layer가 자주 변경하지 않기 때문에 문제 없음) UI Layer가 변화하면 Non-UI Layer에 영향을 미치기 때문에 위와 같은 방법으로 통신한다)
  • Composite Pattern
    View 내부에서는 다양한 위젯들이 존재하지만 일관된 방식으로 표현한다.

 

Motivation

  • 동일한 Model을 통해 다양한 View(UI)를 보여줘야한다.

 

해결책

  • Responsibility 분리 : core business model과 presentation, control logic

 

구성요소

  • Model : 비즈니스 로직 or application object
  • View : UI
  • Controller : View를 Control

 

동작 시나리오 예시

시스템 화면에 숫자가 나타나있고  증가/감소시키는 버튼이 존재한다.

  1. 사용자가 View에 버튼을 클릭한다.
  2. View는 사용자가 눌렀다는 사실을 Controller에 전달하고, Controller는 버튼 종류에 따라 값을 증가해야할지 감소해야할지 판단한다.
  3. Controller는 Model에게 요청하여 값을 증가시킨다.
  4. Model은 값이 변했다는 것을 View에게 Notify한다.

 

예제

빨간 공이 Step 버튼을 눌렀을 때마다 이동하는 시스템이다.

 

  • Model
    윈도우의 크기를 알아서 공의 motion을 통제한다.
    Observable의 하위 class로 구현한다.
    Controller가 실행할 makeOneStep()을 구현한다.

  • View (Observer)

  • Controller

 

반응형