Mediator Pattern

2024. 12. 8. 09:37·Frontend/JS Patterns

 

Mediator(중재자, 조정자) 패턴은

component 가 중앙 지점인 중재자를 통해 서로 상호 작용할 수 있도록 합니다.

 

예를 들어,

항공 교통 관제사가 모든 비행기가 다른 비행기에 충돌하지 않고

안전하게 비행하는 데 필요한 정보를 받도록 하는 것과 같은 역할을 합니다.

 

모든 객체가 다른 객체와 직접 통신하여 many to many 관계가 되는 대신,

객체의 요청은 Mediator 가 처리하는데, Mediator 는 이 요청을 처리하여 필요한 곳으로 전달합니다.

 

Before. Mediator 패턴 적용 전.

 

After. Mediator 패턴 적용 후.

 

Chat room 이 예시 중 하나로,

채팅방 내의 사용자들은 서로 직접 대화하지 않고, 대신, Chat room 이 사용자들 사이의 중재자 역할을 합니다.

 

class ChatRoom {
  logMessage(user, message) {
    const time = new Date();
    const sender = user.getName();

    console.log(`${time} [${sender}]: ${message}`);
  }
}

class User {
  constructor(name, chatroom) {
    this.name = name;
    this.chatroom = chatroom;
  }

  getName() {
    return this.name;
  }

  send(message) {
    this.chatroom.logMessage(this, message);
  }
}

 

새 User 객체를 생성하여 send 메소드를 실행하면 아래와 같이 결과값을 확인할 수 있습니다.

 

 

'Frontend > JS Patterns' 카테고리의 다른 글

Mixin pattern  (0) 2024.12.08
Middleware Pattern  (0) 2024.12.08
Flyweight Pattern  (0) 2024.12.08
Factory Pattern  (0) 2024.12.08
Command Pattern  (0) 2024.11.09
'Frontend/JS Patterns' 카테고리의 다른 글
  • Mixin pattern
  • Middleware Pattern
  • Flyweight Pattern
  • Factory Pattern
JTB
JTB
웹/앱 개발 정보를 공유하고 있습니다.
  • JTB
    JTechBlog
    JTB
  • 전체
    오늘
    어제
    • All About Programming;)
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
        • Web Development
      • Frontend
        • Javascript Essentials
        • Perfomance Optimization
        • JS Patterns
        • React
        • Next.js
        • Flutter
        • Testing
      • Backend
        • Node.js
      • DevOps
        • Docker & Kubernetes
      • Coding Test
        • LeetCode
        • Programmers
      • Tech Books & Lectures
        • Javascript_Modern JS Deep d..
        • Network_IT 엔지니어를 위한 네트워크 입문
      • Projects
        • PolyLingo_2025
        • Build Your Body_2024
        • JStargram_2021
        • Covid19 Tracker_2021
        • JPortfolio_2021
      • BootCamp_Codestates
        • TIL
        • TILookCloser
        • Pre Tech Blog
        • IM Tech Blog
        • Daily Issues and DeBugging
        • First Project
        • Final Project
        • Sprint Review
        • Good to Know
        • Socrative Review
        • HTML & CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 글쓰기
    • 관리
  • 공지사항

  • 인기 글

  • 태그

    스코프
    How memory manage data
    Data Structure
    커리어
    indie hacker
    Network
    Javascript Essentials
    database
    leetcode
    structure of os
    Threads and Multithreading
    need a database
    딥다이브
    mobile app
    Binary Tree BFS
    프론트엔드 성능 최적화 가이드
    자바스크립트
    모던 자바스크립트 Deep Dive
    testing
    TCP/IP
    DOM
    VoiceJournal
    js pattern
    Shared resources
    polylingo
    자바스크립트 딥다이브
    Time complexity and Space complexity
    Operating System
    이벤트
    CPU scheduling algorithm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
JTB
Mediator Pattern
상단으로

티스토리툴바