복합패턴 - Composition Pattern
🔥 복합패턴이란?
문제를 해결하는 용도로 2개 이상의 패턴을 결합하여 사용하는 것을 의미한다.
📌 예시 - MVC 패턴
MVC (Model-View-Controller) 패턴

Model
- 모든 데이터, 상태와 로직이 들어 있다.
- 뷰와 컨트롤러에서 모델의 상태를 조작하거나 가져올 때 필요한 인터페이스를 제공
- 모델이 자신의 상태 변화를 옵저버들에게 연락해주지만 뷰와 컨트롤러에 직접적인 연관은 없다.
View
- 모델을 표현하는 방법을 제공한다.
- 일반적으로 화면에 표시할 때 필요한 상태와 데이터는 모델에서 직접 가져온다.
Controller :
- 사용자로부터 입력을 받으며 입력받은 내용이 모델에게 어떤 의미가 있는지 파악한다.
로직 순서
1. 사용자는 뷰에만 접촉할 수 있다.
2. 컨트롤러가 모델에게 상태를 변경하라고 요청한다.
3. 컨트롤러가 뷰를 변경해 달라고 요청할 수도 있다.
4. 상태가 변경되면 모델이 뷰에게 그 사실을 알린다.
5. 뷰가 모델에게 상태를 요청한다.
MVC에 사용되는 패턴 알아보기
Model (Observer Pattern)
- 상태가 변경되었을 때, 그 모델과 연관된 객체들에게 연락한다.
- View와 Controller에 의존하지 않는다.
- 한 모델에서 여러 개의 뷰를 동시에 사용할 수 있다.
View (Composite Pattern)
- GUI 구성 요소로 이루어진 복합 객체이다.
- 최상위 뷰 구성 요소에게만 화면 갱신을 부탁하면 된다.
- 나머지는 컴포지트 패턴이 알아서 처리한다.
Controller (Strategy Pattern)
- View 객체를 여러 전략을 사용하여 설정할 수 있다.
- View는 애플리케이션의 겉모습에만 신경을 쓰며, 인터페이스의 행동을 모두 Controller에게 맡긴다.
- 전략 패턴을 사용하여 View를 Model로부터 분리하는 데 도움이 된다.
- User가 요청한 내역을 처리하려고 Model과 얘기하는 일을 Controller가 맡고 있으니 View는 알 방법이 없다.
📚 참고문헌