设计模式之中介者模式

来源:互联网 发布:路由器可以限制端口吗 编辑:程序博客网 时间:2024/05/16 10:58

定义

     用一个中介对象来封装一系列对象之间的交互,中介者使得各个对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互.

     即当程序系统中出现多对多的对象之间的相互联系时,可以考虑使用中介者模式,因为可能是系统设计的不合理造成了这种多对多的关系。

结构图

 

代码

//中介者接口public Interface Mediator{    public void send(String message,Colleague colleague);    //定义一个发送消息的方法,得到同事对象和发送消息}

 

//抽象同事类public class Colleague{   protected Mediator mediator;   //设置中介者对象   public Colleague(Mediator mediator)   {       this.mediator=mediator;    }   }

 

/具体同事类public class ConcreteColleague1 extends Colleague{      public ConcreteColleague1(Mediator mediator)      {          super(mediator);      }      public void send(String message)      {          mediator.send(message,this);      }      public void notify(String message)      {         System.out.println("同事1得到消息:"+message);      }}public class ConcreteColleague2 extends Colleague{      public ConcreteColleague2(Mediator mediator)      {          super(mediator);      }      public void send(String message)      {          mediator.send(message,this);      }      public void notify(String message)      {         System.out.println("同事2得到消息:"+message);      }}

 

//具体中介者类public class ConcreteMediator implements Mediator{   private ConcreteColleague1 colleague1;   private ConcreteColleague2 colleague2;   public void setColleague1(ConcreteColleague1 colleague)   {      this.colleague1=colleague;   }   public void setColleague2(ConcreteColleague2 colleague)   {      this.colleague2=colleague;   }   public void send(String message,Colleague colleague)   {       if(colleague instanceof ConcreteColleague1)       {            coleague2.notify(message);       }       else       {            coleague1.notify(message);       }    } }

//客户端调用public static void main(Strng[] args){   ConcreteMediator mediator=new ConcreteMediator();      ConcreteColleague1 c1=new ConcreteColleague1(mediator);   ConcreteColleague2 c2=new ConcreteColleague2(mediator);   mediator.setColleague1(c1);   mediator.setColleague2(c2);   c1.send("代码写完了吗?");   c2.send("还没。。。"); }


  

 缺点

   虽然使用中介者模式减少了Colleague具体对象之间的耦合度,但也同时使得具体中介者承担了过多的责任,那么当系统中的这种多对多的相联系的对象过多时,中介者就会变得很复杂,如果它出了问题,那么整个系统也就出问题了。

    

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老鼠死在空调里怎么办 公务员老公四十岁想辞职怎么办 打胎5次又怀孕怎么办 墙纸颜色太淡了怎么办 皮子腺囊肿有点疼痛怎么办 地板颜色选浅了怎么办 地板买的太暗了怎么办 木地板贴好后发现颜色不好看怎么办 鞋上鞋扣老是开怎么办 虚拟机的win10蓝屏重启怎么办 fs免拆模板专利怎么办 新买的床咯吱响怎么办 实木床一动就响怎么办 cad图纸是斜的怎么办 老房子土墙腻子老掉怎么办 生完孩子子宫大怎么办 刚开的店没人怎么办 刚开业的店没人怎么办 美容店没人进店怎么办 新店开业招不到营业员怎么办 无意开通了花呗怎么办? 花呗灰色用不了怎么办 花呗逾期用不了怎么办 店铺花呗关闭了怎么办 花呗无法使用了怎么办 借呗自动关闭了怎么办 蚂蚁花呗无法开通怎么办 花呗本月还不了怎么办 蚂蚁借呗没钱还怎么办 淘宝账号被限制登录怎么办 辱骂买家被投诉骚扰怎么办 淘宝卖家骚扰买家怎么办 被淘宝卖家电话骚扰怎么办 闲鱼卖东西买家退货运费怎么办 淘宝被恶意拍单怎么办 炒作信用度评价被删除怎么办 删除淘宝评价之后卖家不返现怎么办 美团客户给差评怎么办 淘宝卖家评价差怎么办 淘宝卖家发货未揽收怎么办 周不过5我超过了怎么办