정처기 감자
SW 설계디자인패턴

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

중재자 mediator 패턴 - 타입스크립트 예제

SW설계디자인패턴
읽는데 4분 소요
처음 쓰여진 날: 2025-09-01
마지막 수정일: 2025-09-01
조회수: —
선수학습(1개)
  • 정보처리기사 실기를 위한 디자인 패턴 암기 방법

요약

중재자 mediator 패턴을 타입스크립트 코드와 함께 알아봅니다.

중재자 패턴 요약

패턴 종류핵심 키워드
중재자 (Mediator)객체 간의 통신, 제어를 중앙에서 관리, 객체지향 목표 달성하게 해줌,통신 빈도수 낮음
중재자 패턴 감자
중재자 패턴 감자

중재자 (Mediator) 패턴

중재자 패턴은 수많은 객체(Colleague)들 간의 복잡한 상호작용과 의존성을 하나의 중재자(Mediator) 객체에 캡슐화하여, 객체들이 서로 직접 통신하지 않고 오직 중재자를 통해서만 소통하도록 만드는 패턴입니다.

가장 대표적인 비유는 '항공 관제탑' 입니다. 공항에는 수많은 비행기들이 이착륙합니다. 만약 모든 비행기가 다른 모든 비행기와 직접 통신하여 착륙 순서나 항로를 조율한다면 엄청난 혼란이 발생할 것입니다. 대신, 모든 비행기(Colleague)는 오직 관제탑(Mediator)하고만 통신합니다. 관제탑은 모든 비행기의 상태를 파악하고, 각 비행기에게 언제, 어디로 가야 할지 지시하며 모든 상호작용을 중앙에서 통제합니다.

이처럼 중재자 패턴은 객체 간의 직접적인 연결(M:N 관계)을 중재자를 통한 간접적인 연결(M:1 관계)로 바꿔주어, 시스템의 결합도를 극적으로 낮춥니다.

기본 구조

  • Mediator: 동료(Colleague) 객체 간의 통신을 위한 인터페이스를 정의합니다.
  • ConcreteMediator: Mediator 인터페이스를 구현하며, 실제로 동료 객체들을 조정하는 역할을 합니다. 각 동료 객체를 알고 있으며, 그들 간의 통신을 중재합니다.
  • Colleague: 중재자를 통해 다른 동료와 통신하는 객체들의 공통 인터페이스입니다.
  • ConcreteColleague: Colleague 인터페이스를 구현한 구체적인 클래스입니다. 다른 동료와 통신이 필요할 때, 직접 호출하는 대신 자신의 Mediator에게 요청을 보냅니다.

예시: 채팅방 만들기

여러 명의 사용자가 참여하는 채팅방을 만들어 보겠습니다. 각 사용자(Colleague)는 다른 사용자를 몰라도, 채팅방(Mediator)을 통해 메시지를 보내면 채팅방이 모든 사용자에게 메시지를 전달해 줍니다.

typescript
코드 하이라이팅 중…

위 예시는 가장 기본적인 형태입니다. 실제로는 ChatRoom이 User 목록을 가지고 있으면서, 한 User가 send를 호출하면 ChatRoom이 다른 모든 User에게 메시지를 전달하는 방식으로 구현되어야 합니다.

User 객체는 다른 User 객체의 존재를 전혀 알 필요가 없습니다. 오직 ChatRoom이라는 중재자만 알고 있으면 됩니다. 만약 새로운 사용자가 추가되거나 채팅방의 규칙(예: 욕설 필터링)이 바뀌어도 User 클래스는 전혀 수정할 필요가 없습니다. 모든 로직은 ChatRoom에 집중되어 있기 때문입니다.

중재자 패턴 중요 키워드

  • 객체 간의 복잡한 통신을 중앙에서 관리합니다.
  • 🕸️ M:N의 복잡한 의존 관계를 M:1 관계로 단순화하여 결합도를 낮춥니다.
  • 동료(Colleague) 객체는 재사용하기 쉬워지고, 중재자(Mediator)의 로직만 바꾸면 전체 시스템의 행동을 쉽게 변경할 수 있습니다.
  • 모든 로직이 중재자에 집중되어, 중재자 자체가 너무 복잡해지는 단점이 있을 수 있습니다.
메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(1개)
  • 디자인 패턴 정보처리기사 기출 문제 모음

추천 개념

Beta

관련 글

(41개)
제목태그업데이트시험
추상 팩토리 abstract factory 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
빌더 builder 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
팩토리 메서드 factory method 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-11-03-
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999