中介者模式

/*
抽象中介者
*/
public abstract class Mediator {
    public abstract void send(String message,Colleague colleague);//发送消息
}
/*
* 员工抽象类
* */
public abstract class Colleague {
    private Mediator mediator;//私有属性抽象中介者

    public Colleague(Mediator mediator){//抽象类可以有参构造,构造参数,抽象中介者
        this.mediator=mediator;
    }

    public Mediator getMediator() {//获得中介者
        return mediator;
    }
}
//具体员工1继承抽象员工
public class ConcreteColleague1 extends Colleague{

    public ConcreteColleague1(Mediator mediator) {//继承抽象类,抽象类的有餐构造必须重新构建
        super(mediator);//无法使用this,只能继承父类,super进行指向
    }
    public void send(String message){//发送信息
       getMediator().send(message,this);//获得抽象中介者对象,发送信息以及这个具体员工对象
    }
    public void notice(String message){//同事1收到的信息
        System.out.println("同事1收到的消息:"+message);
    }
}
public class ConcreteColleague2 extends Colleague{

    public ConcreteColleague2(Mediator mediator) {
        super(mediator);
    }
    public void send(String message){
        getMediator().send(message,this);
    }
    public void notice(String message){
        System.out.println("同事2收到的消息:"+message);
    }
}
/*
具体中介者
* */
public class ConcreteMediator extends Mediator{//继承抽象中介者,重写抽象方法
    private ConcreteColleague1 concreteColleague1;//具体员工1
    private ConcreteColleague2 concreteColleague2;//具体员工2

    public void setConcreteColleague1(ConcreteColleague1 concreteColleague1) {//局部参数赋值给这个对象
        this.concreteColleague1 = concreteColleague1;
    }

    public void setConcreteColleague2(ConcreteColleague2 concreteColleague2) {
        this.concreteColleague2 = concreteColleague2;
    }

    @Override
    public void send(String message, Colleague colleague) {//发送方法,消息,抽象员工类
          if(colleague==concreteColleague1){//如果员工对象是员工1
              concreteColleague2.notice(message);//员工2获得消息
          }else{
              concreteColleague1.notice(message);
          }
    }
public class Test {


    public static void main(String[] args) {
        ConcreteMediator concreteMediator=new ConcreteMediator();//具体中介者
        ConcreteColleague1 concreteColleague1=new ConcreteColleague1(concreteMediator);//具体员工1
        ConcreteColleague2 concreteColleague2=new ConcreteColleague2(concreteMediator);//具体员工2
        concreteMediator.setConcreteColleague1(concreteColleague1);//中介属性员工对象1
        concreteMediator.setConcreteColleague2(concreteColleague2);//中介属性员工对象2
        concreteColleague1.send("早上好");
        concreteColleague2.send("做饭");
    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值