设计模式之Mediator——联通篇(原创)
来源:互联网 发布:c语言清屏函数system 编辑:程序博客网 时间:2024/04/27 00:42
设计模式之Mediator——联通篇
中午吃完饭没事,我(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——联通篇(原创)
- 设计模式之Mediator——联通篇
- 设计模式之Mediator——联通篇
- JAVA设计模式学习第四天 设计模式之Mediator——联通篇
- 设计模式之Mediator
- 设计模式之 mediator
- 设计模式之Mediator(中介者)模式(理论篇)
- 设计模式之Mediator(中介者)模式(应用篇)
- 设计模式之Mediator模式(笔记)
- 设计模式之Mediator(1)
- 设计模式之Mediator(2)
- 浅谈JAVA设计模式之——中介者模式(Mediator)
- 设计模式之mediator模式
- 设计模式之Mediator模式
- JAVA设计模式——中介者模式(Mediator)
- Java设计模式——调停者模式(Mediator)
- 设计模式—Mediator中介者模式
- 设计模式之Builder——购机篇(原创)
- 提高网站在搜索引擎中的排名
- BLOG开通。
- 周末要听讲座,不爽~~~
- 地税调查c/s部分 项目感悟
- 10009.用busybox裁减linux
- 设计模式之Mediator——联通篇(原创)
- 逍遥最好--张茜
- JAVA连接数据库组件--对JDBC的进一步封装
- ORACLE 常用的SQL语法和数据对象
- JAVA连接数据库组件--对JDBC的进一步封装--源文件下载
- 数据仓库与企业应用集成(一)
- 10010.Building Tiny Linux Systems with Busybox
- 短期复习Pass英语六级之道
- 数据仓库与企业应用集成(二)