设计模式之Mediator——联通篇(原创)

原创 2004年10月15日 13:29:00

设计模式之Mediator——联通篇 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

中午吃完饭没事,我(133用户)就和同事张三(130用户)、李四(131用户)一块去高新联通大厅(gaoxinLianTongHall)交手机费。到了高新联通大厅(gaoxinLianTongHall),我们发现因为是中午吃饭时间大厅里只有一个工作人员,因此我们只好一个一个来办理交费业务了,首先是张三(130用户),然后是李四(131用户),最后是我(133用户)。

好了,让我们看看这个过程如何来实现呢:

 

1、我们先定义联通大厅(LianTongHall)这样一个接口类:

public interface LianTongHall {

  public void identifyUserType(LianTongUser user, String type);  //判断用户类型

  public void getUserMoney(String type);  //获得用户交的钱

}

2、定义联通大厅(LianTongHall)的具体实现类:

public class ConcreteLianTongHall implements LianTongHall {

  private User130 user130;

  private User131 user131;

  private User133 user133;

 

  public void identifyUserType(LianTongUser user, String type) {

    if (type == "130") {

      user130 = (User130) user; //130用户

    }

    else if (type == "131") {

      user131 = (User131) user; //131用户

    }

    else if (type == "133") {

      user133 = (User133) user; //133用户

    }

  }

 

  public void  getUserMoney(String type) {  //得到用户交的钱

    if (type == "130") {

      user131.pleaseWait();  //131用户请先等

      user133.pleaseWait();  //133用户请先等

    }

    else if (type == "131") {

      user130.pleaseWait();   //130用户请先等

      user133.pleaseWait();   //133用户请先等

    }

    else if (type == "133") {

      user130.pleaseWait();  //130用户请先等

      user131.pleaseWait();  //131用户请先等

    }

  }

}

3、定义联通用户(LianTongUser)接口类:

public interface LianTongUser {

  public void HandInMoney();  //交钱

  public void pleaseWait();   //等待

}

4、定义联通用户(LianTongUser)接口的实现类:

A:130用户(User130)

public class User130 implements LianTongUser {

  private final String type = "130";

  private LianTongHall liantongHall;

 

  public User130(LianTongHall liantongHall) {

      this.liantongHall = liantongHall;

      liantongHall.identifyUserType(this, type);  //联通大厅判断是那种用户

  }

  public void HandInMoney() {

      System.out.println("130用户正在交钱!");

      liantongHall.getUserMoney(type);  //联通大厅得到用户交的钱

  }

  public void pleaseWait() {

      System.out.println("130用户请先等一会!");

  }

}

B:131用户(User131)

public class User131 implements LianTongUser {

  private final String type = "131";

  private LianTongHall liantongHall;

 

  public User131(LianTongHall liantongHall) {

      this.liantongHall = liantongHall;

      liantongHall.identifyUserType(this, type); //联通大厅判断是那种用户

  }

  public void HandInMoney() {

      System.out.println("131用户正在交钱!");

      liantongHall.getUserMoney(type); //联通大厅得到用户交的钱

  }

 

  public void pleaseWait() {

      System.out.println("131用户请先等一会!");

  }

}

C:133用户(User133)

public class User133 implements LianTongUser {

  private final String type = "133";

  private LianTongHall liantongHall;

 

  public User133(LianTongHall liantongHall) {

      this.liantongHall = liantongHall;

      liantongHall.identifyUserType(this, type); //联通大厅判断是那种用户

  }

  public void HandInMoney() {

      System.out.println("133用户正在交钱!");

      liantongHall.getUserMoney(type); //联通大厅得到用户交的钱

  }

 

  public void pleaseWait() {

      System.out.println("133用户请先等一会!");

  }

}

 

5、编写测试类:

public class Test  {

    public static void  main(String[] args) {

        LianTongHall gaoxinLianTongHall = new ConcreteLianTongHall(); //高新联通大厅

        User130 zhangsan = new User130(gaoxinLianTongHall); //张三

        User131 lisi = new User131(gaoxinLianTongHall);   //李四

        User133 me = new User133(gaoxinLianTongHall);   //我

 

        zhangsan.HandInMoney();  //张三交钱

        lisi.HandInMoney();  //李四交钱

        me.HandInMoney();   //我交钱

    }

}

6、说明:

A:Mediator定义:用一个中介对象来封装一系列关于对象交互行为。

B:每个成员都必须知道中介对象,并且和中介对象联系,而不是和其他成员联系。

C:在本例中,中介对象就相当于我们的联通大厅,我们都是和联通大厅发生关系,张三、李四和我之间是没有交钱关系的。

 

设计模式之Mediator——联通篇

来自:http://blog.csdn.net/lxgljj/archive/2004/10/15/137742.aspx设计模式之Mediator——联通篇  中午吃完饭没事,我(133用户)就和同...
  • Sara_2007
  • Sara_2007
  • 2008年06月21日 11:19
  • 382

设计模式之Mediator——联通篇

   中午吃完饭没事,我(133用户)就和同事张三(130用户)、李四(131用户)一块去高新联通大厅(gaoxinLianTongHall)交手机费。到了高新联通大厅(gaoxinLianTongH...
  • cyokin
  • cyokin
  • 2004年11月10日 13:55
  • 570

JAVA设计模式之 中介者模式【Mediator Pattern】

一、概述     用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象...
  • l416112167
  • l416112167
  • 2014年12月02日 22:22
  • 2570

JAVA设计模式学习第四天 设计模式之Mediator——联通篇

中午吃完饭没事,我(133用户)就和 同事张三(130用户)、李四(131用户)一块去高新联通大厅(gaoxinLianTongHall)交手机费。到了高新联通大厅(gaoxinLianTongHal...
  • aaaaaaaa0705
  • aaaaaaaa0705
  • 2011年08月21日 09:18
  • 543

设计模式C++描述----18.中介者(Mediator)模式

一. 举例 比如,现在中图和日本在关于钓鱼岛问题上存在争端。这时,联合国就会站出来,做为调解者,其实也没什么好调解的,钓鱼岛本来就是中国的,这是不争的事实!联合国也就是个传话者、发言人。 结构图如...
  • lwbeyond
  • lwbeyond
  • 2012年05月17日 11:56
  • 2422

设计模式之State——交通篇(原创)

设计模式之State——交通篇 “小朋友过马路,左右看,红灯停,绿灯行,阿姨夸我是乖宝宝。”,我给女儿念着儿歌,突然女儿问我,什么是红绿灯啊?为了给她说清楚,我特意带她看我们家附近的交通灯(NearM...
  • lxgljj
  • lxgljj
  • 2004年10月13日 11:36
  • 4045

设计模式---责任链模式(C++实现)

责任链模式(Chain of Responsibility Pattern)为请求创建一个接受者对象的链。这种模式给与请求的类型,对请求的发送者和接受者进行解耦。属于行为型模式。 在这种模式...
  • My_heart_
  • My_heart_
  • 2017年03月16日 15:48
  • 564

Facade与Mediator模式的区别

http://www.cnblogs.com/sweetdream/archive/2005/12/19/299983.html 门面(Facade)模式和中介者(Mediator)模式有着...
  • caolaosanahnu
  • caolaosanahnu
  • 2014年02月21日 23:27
  • 1207

设计模式之State——交通篇

    “小朋友过马路,左右看,红灯停,绿灯行,阿姨夸我是乖宝宝。”,我给女儿念着儿歌,突然女儿问我,什么是红绿灯啊?为了给她说清楚,我特意带她看我们家附近的交通灯(NearMyFamilyTraff...
  • cyokin
  • cyokin
  • 2004年11月10日 14:10
  • 884

荣之联发布大数据平台DataZoo,阿里巴巴将在欧洲建第二个数据中心 | 大数据24小时

阿里巴巴计划将在欧洲建立第二个数据中心;以色列数据存储公司INFINIDAT获9500万美元融资;荣之联发布大数据平台——DataZoo……以下为您奉上更多大数据热点事件 编辑 ...
  • YMPzUELX3AIAp7Q
  • YMPzUELX3AIAp7Q
  • 2017年10月10日 00:00
  • 148
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式之Mediator——联通篇(原创)
举报原因:
原因补充:

(最多只允许输入30个字)