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
동작 시나리오 예시
시스템 화면에 숫자가 나타나있고 증가/감소시키는 버튼이 존재한다.
- 사용자가 View에 버튼을 클릭한다.
- View는 사용자가 눌렀다는 사실을 Controller에 전달하고, Controller는 버튼 종류에 따라 값을 증가해야할지 감소해야할지 판단한다.
- Controller는 Model에게 요청하여 값을 증가시킨다.
- Model은 값이 변했다는 것을 View에게 Notify한다.
예제
빨간 공이 Step 버튼을 눌렀을 때마다 이동하는 시스템이다.
- Model
윈도우의 크기를 알아서 공의 motion을 통제한다.
Observable의 하위 class로 구현한다.
Controller가 실행할 makeOneStep()을 구현한다.
- View (Observer)
- Controller
반응형
'💻 개발IT > Design Patterns' 카테고리의 다른 글
4. Creational 패턴 - Prototype Pattern (0) | 2022.07.19 |
---|---|
5. Structural 패턴 - Facade Pattern (0) | 2022.07.19 |
3. Behavior 패턴 - Visitor Pattern (0) | 2022.07.19 |
3. Behavior 패턴 - Command Pattern (0) | 2022.07.19 |
5. Structural 패턴 - Bridge Pattern (0) | 2022.03.10 |
5. Structural 패턴 - Composite Pattern (0) | 2022.03.09 |
5. Structural 패턴 - Adapter Pattern (0) | 2022.03.06 |
5. Structural 패턴 - Decorator Pattern (0) | 2022.03.05 |