一、作用
用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。
二、优缺点
优点:减少对象之间的引用,使对象解耦。
缺点:中介者可能很臃肿。
三、例子
//抽象中介者
abstract class Mediator {
public abstract void componentChanged(Component c);
}
//具体中介者
class ConcreteMediator extends Mediator {
public Button button;
public List list;
public void componentChanged(Component c) {
if(c == button) {
System.out.println("--单击按钮--");
list.update();
}
else if(c == list) {
System.out.println("--从列表框选择--");
button.update();
}
}
}
//抽象组件类
abstract class Component {
protected Mediator mediator;
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
//转发调用
public void changed() {
mediator.componentChanged(this);
}
public abstract void update();
}
//具体组件类
class Button extends Component {
public void update() {}
}
//具体组件类
class List extends Component {
public void update() {
System.out.println("列表框增加项");
}
public void select() {
System.out.println("列表框选中项");
}
}