只有一个仲裁者
Mediator 模式
组员向仲裁者报告,仲裁者向组员下达指示,组员之间不在相互询问和相互指示。
要调整多个对象之间的关系时,就需要用到 Mediator 模式。将逻辑处理交给仲裁者执行。
示例程序
| 名字 | 说明 | 角色 |
|---|---|---|
| Mediator | 定义“仲裁者”的接口的接口 | Mediator |
| Colleague | 定义“组员”的接口的接口 | Colleague |
| ColleagueButton | 表示按钮的类。它实现了 Colleague 接口 | ConcreteColleague |
| ColleagueTextField | 表示文本输入框的类。它实现了 Colleague 接口 | ConcreteColleague |
| ColleagueCheckbox | 表示单选框的类。它实现了 Colleague 接口 | ConcreteColleague |
| LoginFrame | 表示登录对话框的类。它实现了 Mediator 接口 | ConcreteMediator |
| Main | 测试程序行为的类 |
Mediator.java
package mediator; public interface Mediator { public abstract void createColleague(); public abstract void colleagueChanged(); }
Colleague.java
package mediator; public interface Colleague { public abstract void setMediator(Mediator mediator); public abstract void setColleagueEnabled(boolean enabled); }
ColleagueButton.java
package mediator; import java.awt.*; public class ColleagueButton extends Button implements Colleague { private Mediator mediator; public ColleagueButton(String caption) { super(caption); } public void setMediator(Mediat