JiveJdon Community Forums
在线308人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 0 回复 / 1
 发表新帖子   回复该主题贴
bojava

悄悄话
发表文章: 2
注册时间: 2007年02月09日 11:01
设计模式之Mediator(中介者)这样理解 对吗? 2007年02月09日 11:02 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 mediator模式(2)     
设计模式初学者!向大家请教了!
最近在看BAND老师的设计模式,看了设计模式之Mediator(中介者)这个文章,中介者,自己写了个简单的例子,这个例子主要是为了理解这个设计模式,同时,想请教一下大家如何提高设计能力!我这个代码可以如何改进,期待大家的指正!谢谢!

代码如下: 
package org.behavior.mediator;

public interface Mediator {
public void register(Colleague c);//其它人要同中介联系,注册自己
}

package org.behavior.mediator;

public class Colleague {

protected Mediator mediator;

public Mediator getMediator() {
return mediator;
}

public void setMediator(Mediator mediator) {
this.mediator = mediator;
this.mediator.register(this);
}
}

//一个买票的中介,一票难求
package org.behavior.mediator;

import java.util.ArrayList;

public class TicketMediator implements Mediator {

//member list 这个变量放在这不太合适?
ArrayList memberList;

ArrayList ticketList;

public TicketMediator() {
memberList = new ArrayList();
ticketList = new ArrayList();
}

public void register(Colleague c) {
memberList.add(c);
}

public synchronized String buyTicket() {
if (ticketList.size() > 0) {
return (String) ticketList.remove(ticketList.size() - 1);
}
return "";
}

public synchronized void sellTicket(String ticket) {
ticketList.add(ticket);
}
}

//我是卖票的,NB
package org.behavior.mediator;

public class ConcreteColleagueSeller extends Colleague {

public void sell()
{
((TicketMediator) this.mediator).sellTicket("bj-sh");
}

public String toString() {

return "ConcreteColleagueSeller";
}
}

//我要回家
package org.behavior.mediator;

public class ConcreteColleagueBuyer extends Colleague {

public void buy() {

String ticket = ((TicketMediator) this.mediator).buyTicket();
if ("".equals(ticket)) {
System.out.println("sorry!");
} else {
System.out.println("Lucky One! < "+ticket+" >");
}
}

public String toString() {
return "ConcreteColleagueBuyer";
}
}


欢迎拍砖啊!谢谢
这个主题有 0 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  每2分种自动备份发贴内容Ctrl-V粘贴取出,提问题前先查询标签列表

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam