[디자인 패턴][행동 패턴] 중재자 패턴(Mediator Pattern)
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. 특징
-
낮은 결합도 : 다른 클래스에 대한 정보를 몰라도 중재자 객체를 통한 접근 가능
-
유지보수의 어려움 : 상호작용 관련 행동들이 하나의 클래스에 정의되므로 복잡한 구조를 갖게되어 유지보수가 어려워짐
Leave a comment