设计模式-中介者模式

发布时间 2023-10-31 22:27:01作者: 辞楠
public class 中介者模式 {
    public static void main(String[] args)
    {
        Mediator mediator=new ConcreteMediator();
        ColleagueA colleagueA=new ColleagueA(mediator);
        ColleagueB colleagueB=new ColleagueB(mediator);
        mediator.setColleagueA(colleagueA);
        mediator.setColleagueB(colleagueB);
        colleagueA.sendMassage("软考加油");
        colleagueB.sendMassage("你也是");
    }
}
abstract class Colleague{
    protected Mediator mediator;
}
class ColleagueA extends Colleague{
    public ColleagueA(Mediator mediator)
    {
        this.mediator=mediator;
    }
    public void sendMassage(String massage)
    {
        mediator.sendMassage(massage,this);
    }
    public void Notify(String massage)
    {
        System.out.println("同事1收到消息     "+massage);
    }
}
class ColleagueB extends  Colleague{
    public ColleagueB(Mediator mediator)
    {
        this.mediator=mediator;
    }
    public void sendMassage(String massage)
    {
        mediator.sendMassage(massage,this);
    }
    public void Notify(String massage)
    {
        System.out.println("同事2收到消息     "+massage);
    }
}
abstract class Mediator{
    public abstract void sendMassage(String massage,Colleague colleague);
    public abstract void setColleagueA(ColleagueA colleagueA);
    public abstract void setColleagueB(ColleagueB colleagueB);
}
class ConcreteMediator extends Mediator{
    private ColleagueA colleagueA;
    private ColleagueB colleagueB;

    @Override
    public void setColleagueA(ColleagueA colleagueA) {
        this.colleagueA = colleagueA;
    }
    @Override
    public void setColleagueB(ColleagueB colleagueB) {
        this.colleagueB = colleagueB;
    }

    @Override
    public void sendMassage(String massage,Colleague colleague)
    {
        if(colleague==colleagueA)
        {
            colleagueB.Notify(massage);
        }else
        {
            colleagueA.Notify(massage);
        }
    }
}

运行结果