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 |