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());
}
}
Mediator 中介者模式
最新推荐文章于 2024-09-11 01:14:17 发布