Compound Patterns

2023. 11. 14. 22:09디자인패턴

728x90

: 일련의 패턴을 함께 사용하여 다양한 디자인 문제를 해결하는 것.

하지만 패턴 몇개를 함께 쓴다고 무조건 compound pattern은 아니다.

여러가지 문제를 해결하기 위한 용도로 쓰일 수 있는 해결책이어야 한다.

 

MVC(Model-View-Controller)

View

: 모델을 표현하는 방법 제공. 

화면에 표시하기 위해 필요한 상태 및 데이터를 모델에서 가져온다.

 

Controller

: 사용자로부터 입력을 받아 그것이 모델에게 어떤 의미가 있는지 파악한다.

 

Model

: 모델에는 데이터, 상태, 비즈니스 로직이 들어있다.

자신의 상태 변화에 대해 옵저버들에게 연락을 해주지만 

뷰나 컨트롤러에게는 관심이 없다.

1. 사용자 요청

: 사용자가 뷰에게 뭔가를 요청. 뷰에서 컨트롤러한테 그에 맞는 요청

2. 상태 변경하라고 요청

: 뷰에서 한 요청을 해석하고, 해석된 결과에 따라 모델에게 요청

3. 디스플레이 변경

: 뷰의 요청의 결과로 뷰를 바꿀 수 있다.

예) 버튼 활성화 또는 비활성화

4. 상태 변경 완료

: 모델에서 무언가 바뀌면 뷰에게 상태가 변경되었음을 알린다.

5. 상태 정보 요청

: 화면에 표시할 상태는 뷰에서 모델로부터 직접 가져온다.

예) 모델->뷰: 새로운 곡이 재생

뷰->모델: 곡 제목 요청, 이를 받아 화면에 출력

 

 

어떤 패턴들을 사용하나?

모델- observer pattern 사용

  • 상태가 바뀔 때마다 뷰와 컨트롤러에게 연락
  • 뷰와 컨트롤러로부터 독립적
  • 여러 뷰를 동시에 사용도 가능

 

뷰,컨트롤러- stategy pattern 사용

  • 컨트롤러는 뷰의 행동에 해당
    -> 사용자의 요청에 대한 처리는 모두 컨트롤러에게 맡긴다.
  • 다른 행동을 하고 싶다면 다른 컨트롤러로 교환하면 된다.
  • 뷰를 모델로부터 분리
    -> 사용자가 요청한 내역을 처리하기 위해 모델과 컨트롤러가 대화하며 뷰는 알지 못함

뷰- composite pattern 사용

  • 윈도우,버튼 등 다양한 구성요소 관리
  • 최상위 뷰에게 요청하면 알아서 구성요소들 처리

 

 

728x90

'디자인패턴' 카테고리의 다른 글

Chain of Responsibility Design Pattern  (1) 2023.12.05
Bridge Design Pattern  (2) 2023.12.05
Proxy Pattern  (0) 2023.11.07
State pattern  (0) 2023.10.31
composite pattern  (0) 2023.10.30