设计模式-中介者模式

复制代码
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);
        }
    }
}
复制代码

运行结果

 

posted @   辞楠  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示