中介者模式

定义

在这里插入图片描述

同事中介者模式
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ConcreteMediator m = new ConcreteMediator();
		ConcreteColleague1 c1 = new ConcreteColleague1(m);
		ConcreteColleague2 c2 = new ConcreteColleague2(m);
		m.setColleague1(c1);
		m.setColleague2(c2);
		c1.Send("你吃饭了吗");
		c2.Send("没有呢,你请客");

	}

}

abstract class Mediator {
	public void Send(String message, Colleague colleague) {
	};
}

abstract class Colleague {
	protected Mediator mediator;

	/**
	 * 
	 */
	public Colleague(Mediator mediator) {
		this.mediator = mediator;

	}

}

class ConcreteMediator extends Mediator {
	private ConcreteColleague1 colleague1;
	private ConcreteColleague2 colleague2;

	public ConcreteColleague1 getColleague1() {
		return colleague1;
	}

	public void setColleague1(ConcreteColleague1 colleague1) {
		this.colleague1 = colleague1;
	}

	public ConcreteColleague2 getColleague2() {
		return colleague2;
	}

	public void setColleague2(ConcreteColleague2 colleague2) {
		this.colleague2 = colleague2;
	}

	@Override
	public void Send(String message, Colleague colleague) {
		if (colleague == colleague1)
			colleague2.Notify(message);
		else
			colleague1.Notify(message);

	}

}

class ConcreteColleague1 extends Colleague {

	public ConcreteColleague1(Mediator mediator) {
		super(mediator);
		// TODO
	}

	public void Send(String message) {
		mediator.Send(message, this);
	}

	public void Notify(String message) {
		System.out.println("同事1收到信息" + message);

	}

}

class ConcreteColleague2 extends Colleague {

	public ConcreteColleague2(Mediator mediator) {
		super(mediator);
		// TODO
	}

	public void Send(String message) {
		mediator.Send(message, this);
	}

	public void Notify(String message) {
		System.out.println("同事2收到信息" + message);

	}

}

安理会做中介
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		UnitedNationsSecurityCouncil UNSC = new UnitedNationsSecurityCouncil();
		USA c1 = new USA(UNSC);
		Iraq c2 = new Iraq(UNSC);
		UNSC.setColleague1(c1);
		UNSC.setColleague2(c2);
		c1.Declare("不准研制核武器,否则要发动战争!");
		c2.Declare("我们没有核武器,也不怕侵略!");

	}

}

abstract class UnitedNations {
	public void Declare(String message, Country colleague) {
	};
}

abstract class Country {
	protected UnitedNations mediator;

	/**
	 * 
	 */
	public Country(UnitedNations mediator) {
		this.mediator = mediator;

	}

}

class UnitedNationsSecurityCouncil extends UnitedNations {
	private USA colleague1;
	private Iraq colleague2;

	public void setColleague1(USA colleague1) {
		this.colleague1 = colleague1;
	}

	public void setColleague2(Iraq colleague2) {
		this.colleague2 = colleague2;
	}

	@Override
	public void Declare(String message, Country colleague) {
		if (colleague == colleague1)
			colleague2.Getmessage(message);
		else
			colleague1.Getmessage(message);

	}

}

class USA extends Country {

	/**
	 * @param mediator
	 */
	public USA(UnitedNations mediator) {
		super(mediator);
		// TODO Auto-generated constructor stub
	}

	public void Declare(String message) {
		mediator.Declare(message, this);
	}

	public void Getmessage(String message) {
		System.out.println("美国获得对方信息" + message);

	}

}

class Iraq extends Country {

	/**
	 * @param mediator
	 */
	public Iraq(UnitedNations mediator) {
		super(mediator);
		// TODO Auto-generated constructor stub
	}

	public void Declare(String message) {
		mediator.Declare(message, this);
	}

	public void Getmessage(String message) {
		System.out.println("伊拉克获得对方信息" + message);

	}

}

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值