minstudio

중재자 패턴 (Mediator)

중재자 패턴(Mediator Pattern)은 객체들 간의 복잡한 상호작용을 캡슐화하여, 객체들이 서로 직접 통신하지 않고 '중재자'를 통해서만 통신하도록 만드는 행위 패턴입니다.

공항의 비행기들을 생각해봅시다. 수많은 비행기들이 서로의 위치를 공유하며 직접 소통하면 통신망이 거미줄처럼 엉켜 대형 사고가 납니다. 대신 '관제탑(Mediator)' 하나를 두고, 비행기들은 오직 관제탑과만 통신합니다. 채팅방, 스마트홈 허브 등 M:N의 복잡한 관계를 1:N으로 단순화할 때 필수적인 패턴입니다.

📡 Mediator: 복잡한 관계를 관제탑 하나로 통제 Control Tower (Mediator) ✈️ Flight 101 ✈️ Flight 202 🚁 Copter 55 ✈️ Flight 777 비행기끼리 직접 통신하지 않음 (거미줄(Star) 네트워크 방지)
import java.util.Date;

// Mediator 역할
class ChatRoom {
    public static void showMessage(User user, String message) {
        System.out.println(new Date().toString() + " [" + user.getName() + "] : " + message);
    }
}

// Colleague
class User {
    private String name;
    public User(String name) { this.name = name; }
    public String getName() { return name; }
    
    public void sendMessage(String message) {
        // 통신 로직을 자신이 처리하지 않고 ChatRoom(Mediator)에게 위임
        ChatRoom.showMessage(this, message);
    }
}

public class Main {
    public static void main(String[] args) {
        User robert = new User("Robert");
        User john = new User("John");

        robert.sendMessage("안녕 John!");
        john.sendMessage("오, 안녕 Robert!");
    }
}
중재자 패턴 (Mediator) | Minstudio