《大话设计模式》第二十五章
- package ch25;
- public abstract class Country {
- protected UnitedNations mediator;
- public Country(UnitedNations mediator) {
- this.mediator = mediator;
- }
- }
- package ch25;
- public abstract class UnitedNations {
- public abstract void declare(String message, Country colleague);
- }
- package ch25;
- public class Irag extends Country {
- public Irag(UnitedNations mediator) {
- super(mediator);
- }
- public void declare(String message) {
- mediator.declare(message, this);
- }
- public void getMessage(String message) {
- System.out.println("伊拉克获得对方信息:" + message);
- }
- }
- package ch25;
- public class USA extends Country {
- public USA(UnitedNations mediator) {
- super(mediator);
- }
- public void declare(String message) {
- mediator.declare(message, this);
- }
- public void getMessage(String message) {
- System.out.println("美国获得对方信息:" + message);
- }
- }
- package ch25;
- public class UnitedNationsSecurityCouncil extends UnitedNations {
- private USA colleague1;
- private Irag colleague2;
- public void setColleague1(USA colleague1) {
- this.colleague1 = colleague1;
- }
- public void setColleague2(Irag colleague2) {
- this.colleague2 = colleague2;
- }
- @Override
- public void declare(String message, Country colleague) {
- if (colleague == colleague1) {
- colleague2.getMessage(message);
- } else {
- colleague1.getMessage(message);
- }
- }
- }
- package ch25;
- /**
- * 中介者模式
- * @author Administrator
- *
- */
- public class Client {
- /**
- * @param args
- */
- public static void main(String[] args) {
- UnitedNationsSecurityCouncil unsc = new UnitedNationsSecurityCouncil();
- USA c1 = new USA(unsc);
- Irag c2 = new Irag(unsc);
- unsc.setColleague1(c1);
- unsc.setColleague2(c2);
- c1.declare("不准研制核武器,否则要发动战争");
- c2.declare("我们没有核武器,也不怕侵略");
- }
- }
运行:
- 伊拉克获得对方信息:不准研制核武器,否则要发动战争
- 美国获得对方信息:我们没有核武器,也