avatar

目录
中介者模式

个人博客

http://www.milovetingting.cn

中介者模式

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

模式定义

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

使用场景

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

简单使用

定义Mediator

java
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

java
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实现类

java
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实现类

java
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);
}

}

调用

java
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();
}

}

输出结果

Code
1
2
转发Buyer消息给Seller
转发Seller消息给Buyer
文章作者: milovetingting
文章链接: http://www.milovetingting.cn/2020/02/14/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E4%B8%AD%E4%BB%8B%E8%80%85%E6%A8%A1%E5%BC%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 milovetingting

评论