Mediator

최완식·2023년 2월 13일
0

Design Patterns

목록 보기
21/26
post-thumbnail

GoF의 디자인 패턴, 중재자 패턴에 대해 알아본다.

해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.

핵심 요약

  • 객체들 간의 복잡한 관계를 중재자라는 것을 두어 매우 효과적으로 단순화시킨다.

예시

  • 에어컨, 문, 창문, 보일러가 있다고 하자.
  • 문, 창문이 열려 있다면 닫고 에어컨을 틀어야 한다.
  • 보일러를 틀고 싶다면 문, 창문을 닫고 틀어야 한다.
  • 환기를 하고 싶다면 문, 창문을 둘다 열어야 한다.
  • 이렇게 객체간의 연결된 작업이 필요할 경우, 상태 관리가 어려워진다.

  • 이럴 경우 객체들 사이에 중재자를 두어, 해당 객체로만 요청을 하도록 하여 상태를 관리한다.

Code

  • 코드를 github에 올려두었으나, 크게 도움되지 않는 것 같아 첨부하지 않는다.
  • 궁금하다면 찾아가보자.
  • 다만, 해당 코드는 정말 좋지 않다.

활용성

  • 실제로 만들어보니 크게 도움이 안되는 것 같다.

생각해볼 점

  • 커플링이 너무 심해진다. (init에서 받음)
  • 특정 함수에서 하나이상의 동작(mediator로 전달)을 하게 되니, 동작을 이해하기 쉽지 않다.
  • 무한 루프가 돌 가능성이 높아진다.
  • 해당 패턴은 중간자를 두어 책임을 나눈다는 것에 방점을 두면 좋으나,
  • 구현 방식을 위와 같이 하면 망한다. 절대 하지 말자.
  • 단방향 흐름이 제일 좋다.

Reference

profile
Goal, Plan, Execute.

0개의 댓글