컴파운드 패턴(Compound Pattern)의 정의
컴파운드 패턴(Compound Pattern)이란 하나의 디자인 문제를 해결하기 위해 여러 패턴을 함께 사용하는 것을 뜻합니다. MVC 패턴도 바로바로 컴파운드 패턴의 한 예시입니다.
MVC 집중 탐구
Controller가 존재하는 이유
- 모델(Model)을 조작하는 임무를 뷰(View)에서 수행한다면, 뷰에서 두 가지 역할을 하게 되면서 코드가 복잡해지는 문제가 있습니다.
- 뷰를 모델에 너무 밀접하게 연관시켜야 한다는 문제가 있습니다. 이러한 경우, 재사용하기가 아주 힘들어집니다.
컨트롤러(Controller)를 사용하면 모델과 뷰의 결합을 끊어줄 수 있어서 나중에 확장하기가 용이합니다.
MVC에 사용된 디자인 패턴
- 모델(Model) : 옵저버 패턴(Observer Pattern)
- 모델에서는 옵저버 패턴을 이용하여 상태가 변경되었을 때 연관된 객체들에게 연락을 합니다.
- 컨트롤러(Controller) : 스트래티지 패턴(Strategy Pattern)
- 뷰와 컨트롤러는 고전적인 스트래티지 패턴으로 구현되어 있습니다. 뷰에서는 애플리케이션의 겉모습에만 신경쓰고, 인터페이스의 행동에 대한 결정은 모두 컨트롤러에게 맡깁니다.
- 뷰(View) : 컴포지트 패턴(Composite Pattern)
- 컨트롤러는 최상단 뷰한테만 화면을 갱신해달라고 요청을 하고, 나머지 뷰들은 컴포지트 패턴에 의해 자동으로 처리됩니다.