模式的定义与特点
中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。
中介者模式是一种对象行为型模式,其主要优点如下:
- 类之间各司其职,符合迪米特法则。
- 降低了对象之间的耦合性,使得对象易于独立地被复用。
- 将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。
其主要缺点是:
- 中介者模式将原本多个对象直接的相互依赖变成了中介者和多个同事类的依赖关系。
- 当同事类越多时,中介者就会越臃肿,变得复杂且难以维护。
应用场景
ATC代表空中交通管制。空管调解员不过是机场可用的空中交通管制塔。在这里,您可以看到不同的航班(如101航班、202航班、707航班和808航班)。假设101航班要在机场的一个特定航站楼降落。然后飞行员要做的是,他将与空管调解员沟通,说他想让101航班在特定的机场航站楼降落。然后空管调解员会做的是,他会检查是否有任何航班在那个特定的航站楼。如果那里没有航班,那么空管调解员会做的就是向其他航班的飞行员发送信息说101航班要降落了你不应该在那个特定的航站楼降落。然后空管调解员向101航班的飞行员发送信息,说你可以在这个特定的机场航站楼降落你的航班。一旦101航班的飞行员收到来自空管调解员的确认信息,他将在那个特定的终端降落该航班。
模式类图
代码
抽象中介者(AbstractChatRoom)
public abstract class Oyy22AbstractChatRoom {
protected abstract void login(Oyy22AbstractUser user);
protected abstract void receive(Oyy22AbstractUser user, String msg);
}
实际中介者(WechatRoom)
import java.util.ArrayList;
import java.util.List;
public class Oyy22WechatRoom extends Oyy22AbstractChatRoom {
private List<Oyy22AbstractUser> userList;
public Oyy22WechatRoom()