Java设计模式之Mediator模式

两个类 一个是主播 Anchor 一个是嘉宾 Guest 主播说话的时候,嘉宾要停下,嘉宾只能在主播不说话的时候说话。
package action.mediator1;

public class Anchor {
 private boolean free;

 private Mediator med;
 public Anchor(Mediator md){
  med=md;
 }

 public boolean isFree() {
  return free;
 }

 public void setFree(boolean free) {
  this.free = free;
 }

 public void speak() {
  med.anchorSpeak();
 }

 public void stop() {
  med.anchorStop();
 }
}
package action.mediator1;

public class Guest {
 private boolean free;

 private Mediator med;

 public Guest(Mediator md) {
  this.med = md;
 }

 public boolean isFree() {
  return free;
 }

 public void setFree(boolean free) {
  this.free = free;
 }

 public void speak() {
  med.guestSpeak();

 }

 public void stop() {
  med.guestStop();
 }
}
package action.mediator1;

public class Mediator {
 private Anchor anchor;
 private Guest guest;
 public void regAnchor(Anchor anchor){
  this.anchor=anchor;
 }
 public void regGuest(Guest guest){
  this.guest=guest;
 }
public void anchorSpeak(){
 if(!guest.isFree()){
  guest.stop();
 }
 System.out.println("Anchor is speaking....");
 anchor.setFree(false);
}
public void guestSpeak(){
 if(anchor.isFree()){
  System.out.println("Guest is speaking....");
  guest.setFree(false);
 }
 else{
  System.out.println("Anchor is speaking. Do not interrupt...");
 }
 
}
public void anchorStop(){
 System.out.println("Anchor stop speaking now....");
 anchor.setFree(true);
}
public void guestStop(){
 System.out.println("Guest stop speaking now...");
 guest.setFree(true);
 
}
}
package action.mediator1;

public class Demo {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Mediator med = new Mediator();
  Anchor anchor = new Anchor(med);
  Guest guest=new Guest(med);
  med.regAnchor(anchor);
  med.regGuest(guest);
  anchor.speak();
  guest.speak();
  anchor.stop();
  guest.speak();
  anchor.speak();
 }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值