티스토리 뷰
Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요.
미디에이터 패턴에 대해서 알아보겠습니다. 미디에이터는 서로 관련된 객체 사이의 복잡한 통신과 제어를 한 곳에 집중해야 할 경우 해당 패턴을 사용하면 됩니다.
예를 들어 자동화 시스템이 주거환경에 구축되었다고 가정합니다. 아침 알람이 울리면 알람시계는 커피 포트에게 커피 만드는 일을 전송합니다. 그리고 주말에는 커피를 안끊여야하고 샤워 예정 시각 15분 전에 잔디밭 스프링클러를 꺼야합니다. 앞으로 이런 자동화 시스템의 조건이 많아지게 될 경우 어떤 객체에 어떤 규칙을 넣어야 할지 결정하기가 어려워질 수 있습니다. 이럴 경우 미디에이터 패턴을 사용하면 됩니다.
미디에이터란?
그럼 미디에이터가 무엇을까요? 상태가 변경 될때마다 미디에이터에게 알려주고, 미디에이터에서 보낸 요청에 응답하는 구조를 의미합니다. 그렇게 되면 미디에이터에는 모든 시스템을 제어할 수 있는 로직이 들어가 있게 됩니다.
위에서 언급한 자동화 시스템 예제의 문제점의 해결방안으로써 미디에이터를 선언하고 자동화 시스템 조건을 미디에이터에 적용한다면 다양한 객체를 신경쓰는 것이 아닌 미디에이터만 수정하여 관리할 수 있습니다.
장점
시스템하고 객체의 분리를 통한 재사용성을 획기적으로 향상 가능합니다.
제어 로직을 한 곳에 모아두어 관리하기 수월합니다.
단점
디자인을 잘못할 시 미디에이터 객체 자체가 너무 복잡해질 수 있습니다.
마무리
미디에이터 패턴에 대해서 알아봤습니다. 객체와 제어로직의 분리를 통한 관리의 효율성이 필요한 프로젝트인 경우 미디에이터를 고려해 보는 것도 좋을거 같습니다.
'프로그래밍 > Design Patterns' 카테고리의 다른 글
프로토타입(Prototype) 패턴 (0) | 2022.02.10 |
---|---|
메멘토(Memento) 패턴 (0) | 2022.02.09 |
인터프리터(Interpreter) 패턴 (0) | 2022.02.02 |
플라이웨이트(Flyweight) 패턴 (0) | 2022.01.26 |
역할 사슬(Chain of Responsibility) 패턴 (0) | 2022.01.21 |
- MCC
- IOS
- 안드로이드
- 알고리즘
- missionchina
- issue
- Android Studio
- 선교
- 코틀린
- Android
- 스코어헬퍼
- 미션차이나센터
- 고시문
- 탁구
- 임용고시
- IT
- DI
- Kotlin
- view
- missioon
- swift
- RXjava
- 점수판
- 패턴
- flutter
- push
- 고시문헬퍼
- java
- 디자인패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |