java中介者模式

Uml图:


//1.Colleague
//Colleague.java
public interface Colleague {
      public void giveMess(String[] mess);

      public void receiverMess(String mess);

      public void setName(String name);

      public String getName();
}
//2.具体同事类

//ColleagueA.java
public class ColleagueA implements Colleague {
      ConcreteMediator mediator;
      String name;

      public ColleagueA(ConcreteMediator mediator) {
            this.mediator = mediator;
            mediator.registerColleagueA(this);
      }

      @Override
      public String getName() {
            return name;
      }

      @Override
      public void giveMess(String[] mess) {
            mediator.deliverMess(this, mess);
      }

      @Override
      public void receiverMess(String mess) {
            System.out.println(name + "收到信息:");
            System.out.println("\t" + mess);
      }

      @Override
      public void setName(String name) {
            this.name = name;
      }
}

//ColleagueB.java

public class ColleagueB implements Colleague {
      ConcreteMediator mediator;
      String name;

      public ColleagueB(ConcreteMediator mediator) {
            this.mediator = mediator;
            mediator.registerColleagueB(this);
      }

      @Override
      public String getName() {
            return name;
      }

      @Override
      public void giveMess(String[] mess) {
            mediator.deliverMess(this, mess);
      }

      @Override
      public void receiverMess(String mess) {
            System.out.println(name + "收到信息:");
            System.out.println("\t" + mess);
      }

      @Override
      public void setName(String name) {
            this.name = name;
      }
}

//ColleagueC.java

public class ColleagueC implements Colleague {
      ConcreteMediator mediator;
      String name;

      public ColleagueC(ConcreteMediator mediator) {
            this.mediator = mediator;
            mediator.registerColleagueC(this);
      }

      @Override
      public String getName() {
            return name;
      }

      @Override
      public void giveMess(String[] mess) {
            mediator.deliverMess(this, mess);
      }

      @Override
      public void receiverMess(String mess) {
            System.out.println(name + "收到信息:");
            System.out.println("\t" + mess);
      }

      @Override
      public void setName(String name) {
            this.name = name;
      }
}

//具体中介者:
ConcreateMediator.java

public class ConcreteMediator {
      ColleagueA colleagueA;
      ColleagueB colleagueB;
      ColleagueC colleagueC;

      public void registerColleagueA(ColleagueA colleagueA) {
            this.colleagueA = colleagueA;
      }

      public void registerColleagueB(ColleagueB colleagueB) {
            this.colleagueB = colleagueB;
      }

      public void registerColleagueC(ColleagueC colleagueC) {
            this.colleagueC = colleagueC;
      }

      public void deliverMess(Colleague colleague, String[] mess) {
            if (mess.length >= 2) {
                  if (colleague == colleagueA) {
                        colleagueB.receiverMess(colleague.getName() + mess[0]);
                        colleagueC.receiverMess(colleague.getName() + mess[1]);
                  } else if (colleague == colleagueB) {
                        colleagueA.receiverMess(colleague.getName() + mess[0]);
                        colleagueC.receiverMess(colleague.getName() + mess[1]);
                  } else if (colleague == colleagueC) {
                        colleagueA.receiverMess(colleague.getName() + mess[0]);
                        colleagueB.receiverMess(colleague.getName() + mess[1]);
                  }
            }

      }

}

//模式使用:
public class Application {

      public static void main(String[] args) {
            ConcreteMediator mediator =new ConcreteMediator();
            ColleagueA colleagueA=new ColleagueA(mediator);
            ColleagueB colleagueB=new ColleagueB(mediator);
            ColleagueC colleagueC=new ColleagueC(mediator);
            colleagueA.setName("A国");
            colleagueB.setName("B国");
            colleagueC.setName("C国");
            String messA[] ={"要求归还100","要求归还500"};
            colleagueA.giveMess(messA);
            String messB[] ={"要求归还200","要求归还300"};
            colleagueB.giveMess(messB);
            String messC[] ={"要求归还50","要求归还800"};
            colleagueC.giveMess(messC);
            
      }

}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值