个人博客

http://www.milovetingting.cn

中介者模式

中介者模式也称为调解者模式或调停模式。

模式定义

中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显影响。

使用场景

当对象间交互操作很多且每个对象的行为操作都依赖彼此时,为防止在修改一个对象的行为时,同时涉及修改很多其他对象的行为。可采用中介者模式来解决耦合的问题。将对象间多对多关系变成一对多的问题。

简单使用

定义Mediator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public abstract class Mediator {

public void handleMessage(Customer customer) {
if (customer instanceof Seller) {
sendMessageToBuyer();
} else if (customer instanceof Buyer) {
sendMessageToSeller();
}
}

public abstract void sendMessageToSeller();

public abstract void sendMessageToBuyer();

}

定义Customer

1
2
3
4
5
6
7
8
9
10
11
public abstract class Customer {

protected Mediator mediator;

public Customer(Mediator mediator) {
this.mediator = mediator;
}

public abstract void action();

}

定义Mediator实现类

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MediatorImpl extends Mediator {

@Override
public void sendMessageToSeller() {
System.out.println("转发Buyer消息给Seller");
}

@Override
public void sendMessageToBuyer() {
System.out.println("转发Seller消息给Buyer");
}

}

定义Customer实现类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Buyer extends Customer {

public Buyer(Mediator mediator) {
super(mediator);
}

@Override
public void action() {
mediator.handleMessage(this);
}

}

public class Seller extends Customer {

public Seller(Mediator mediator) {
super(mediator);
}

@Override
public void action() {
mediator.handleMessage(this);
}

}

调用

1
2
3
4
5
6
7
8
9
10
11
public class Main {

public static void main(String[] args) {
MediatorImpl mediator = new MediatorImpl();
Buyer buyer = new Buyer(mediator);
Seller seller = new Seller(mediator);
buyer.action();
seller.action();
}

}

输出结果

1
2
转发Buyer消息给Seller
转发Seller消息给Buyer