个人博客
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
|