Mediator 中介者模式

package com.lonton.designpatterns;

interface IMediator
{
	public void ask();

	public void answer();

	public void registerA(ColleagueA a);

	public void registerB(ColleagueB b);
}

class ConcreteMediator implements IMediator
{
	ColleagueA a;
	ColleagueB b;

	@Override
	public void ask()
	{
		// TODO Auto-generated method stub	
		System.out.println("A: Hi, I need a data!");
	}

	@Override
	public void answer()
	{
		// TODO Auto-generated method stub
		a.setData(b.getData());
		System.out.println("B: Hey budy, here it is!");
	}

	@Override
	public void registerA(ColleagueA a)
	{
		// TODO Auto-generated method stub
		this.a = a;
	}

	@Override
	public void registerB(ColleagueB b)
	{
		// TODO Auto-generated method stub
		this.b = b;
	}

}

abstract class Colleague
{
	int data;
	IMediator mediator;

	public abstract void doSomething();
	
	public abstract void setData(int data);
	
	public abstract int getData();
}

class ColleagueA extends Colleague
{
	public ColleagueA(IMediator mediator)
	{
		data = 0;
		
		this.mediator = mediator;
		this.mediator.registerA(this);
	}

	@Override
	public void doSomething()
	{
		// TODO Auto-generated method stub
		mediator.ask();
	}

	@Override
	public void setData(int data)
	{
		// TODO Auto-generated method stub
		this.data = data;
	}

	@Override
	public int getData()
	{
		// TODO Auto-generated method stub
		return data;
	}

}

class ColleagueB extends Colleague
{
	public ColleagueB(IMediator mediator)
	{
		data = 200;
		
		this.mediator = mediator;
		this.mediator.registerB(this);
	}

	@Override
	public void doSomething()
	{
		// TODO Auto-generated method stub
		mediator.answer();
	}

	@Override
	public void setData(int data)
	{
		// TODO Auto-generated method stub
		this.data = data;
	}

	@Override
	public int getData()
	{
		// TODO Auto-generated method stub
		return data;
	}

}

public class MediatorTest
{
	public static void main(String[] args)
	{
		IMediator mediator = new ConcreteMediator();
		
		ColleagueA colleagueA = new ColleagueA(mediator);
		ColleagueB colleagueB = new ColleagueB(mediator);
		
		System.out.println("The data in colleagueA is: " + colleagueA.getData());
		
		colleagueA.doSomething();
		colleagueB.doSomething();
		
		System.out.println("The data in colleagueA is: " + colleagueA.getData());
	}
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值