Updated:

1. 개요

객체간의 상호작용을 캡슐화하는 클래스를 정의하고, 해당 클래스를 이용하여 상호작용 하도록 하는 패턴

중재자 패턴(Mediator Pattern)은 행동 패턴(Behavioral Pattern)의 한 종류로, 상호작용과 관련된 행동을 하나의 객체로 모으고, 해당 객체를 통해서만 상호작용을 하도록 하는 패턴이다. 다른 객체 대신 중재자 객체만 알면 되기 때문에 객체 사이의 결합도를 낮출 수 있다.

2. 행동 패턴(Behavioral Pattern)

2-1. 행동 패턴이란?

행동 패턴이란 처리의 책임을 어떤 객체에게 할당하는 것이 좋은지, 알고리즘을 어떤 객체에 정의하는 것이 좋은지 등의 책임 분배와 관련된 패턴이다.

2-2. 행동 패턴 종류

3. 구성

[출처 : GoF의 디자인 패턴]

  • Mediator : 상호작용과 관련된 행동을 정의한 인터페이스

  • ConcreteMediator : Mediator 구현체

  • Colleague : Mediator를 이용하여 상호작용하는 클래스

4. 예제 코드

사용자의 구매 금액을 출력하는 코드를 구현해보자. Mediator Pattern을 이용하면 중재자 클래스에 대한 정보만으로 다른 클래스들과 상호작용 할 수 있다.

4-1. Mediator

[Order.java]

1
2
3
4
public interface Order {

    void printMessage(int price);
}

4-2. ConcreteMediator

[OrderImpl.java]

1
2
3
4
5
6
7
public class OrderImpl implements Order {

    @Override
    public void printMessage(int price) {
        System.out.println("The total purchase amount is " + price + " won");
    }
}

4-3. Colleague

[User.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class User {

    private String name;
    private Order order;

    public User(String name) {
        this.name = name;
        this.order = new OrderImpl();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void order(int price) {
        order.printMessage(price);
    }
}

5. 테스트

[Clinet.java]

1
2
3
4
5
6
7
public class Client {

    public static void main(String[] args) {
        User user = new User("Aiden");
        user.order(10000);
    }
}

[실행 결과]

6. 특징

  • 낮은 결합도 : 다른 클래스에 대한 정보를 몰라도 중재자 객체를 통한 접근 가능

  • 유지보수의 어려움 : 상호작용 관련 행동들이 하나의 클래스에 정의되므로 복잡한 구조를 갖게되어 유지보수가 어려워짐

Updated:

Leave a comment