首页(162) xml(5) spring(1) 生活(8) java(70) 代码(10) 英语(4) 数据库(7) c#(14) 成长(10) 软件工程(27)  写新日志
 
 

玻璃杯中的花生壳

  真爱的事业和真正的爱情一生只有一次,都值得我们温柔地相待,因为那种感觉是永远都无法复制的, 这世界真正属于你的东西其实并不多,你不好好珍惜,它便会离你而去,包括机遇,包括爱情,包括生命。
   不要找任何理由,  当幸福在你身边的时候就抓住它,你就一定会很幸福! 
   

时 间 记 忆
«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031

最 新 评 论
回复:xml的Jdom解析过程详解
回复:突然想到的几句话!
 Boyle came out of n
回复:xml的Jdom解析过程详解
回复:配置Spring数据源
回复:使用SAX解析XML
回复:java中写文件操作时FileOu
回复:关联和依赖关系的区分
回复:HttpSessionListen
回复:Spring AOP四种创建通知(

最 新 日 志
Java开发者的十大戒律
配置Spring数据源
java多线程设计模式
java中switch的使用
性格,编码,测试
突然想到的几句话!
理解Spring AOP中的关键概念
Spring AOP四种创建通知(拦截器
xml的四种解析方法 比较 sax,do
xml的Jdom解析过程详解

最 新 留 言
签写新留言

我渴望知识
很好的东东
帖子不错,道声谢
想拜师学艺
我的呼喊

搜 索


用 户 登 录
用户名称:
登陆密码:
密码保存:

友 情 连 接

模板设计:部落窝模板世界

blog名称:玻璃杯中的花生壳
日志总数:162
评论数量:249
留言数量:1
访问次数:829929
建立时间:2004年11月4日
 
 
 
[软件工程]设计模式之Iterator——点名篇
[ 2006/8/5 13:08:36 | By: 玻璃杯中的花生壳 ]
 
设计模式之Iterator——点名篇     上了这么多年学,我发现一个问题,好象老师都很喜欢点名,甚至点名都成了某些老师的嗜好,一日不点名,就饭吃不香,觉睡不好似的,我就觉得很奇怪,你的课要是讲的好,同学又怎么会不来听课呢,殊不知:“误人子弟,乃是犯罪!”啊。 好了,那么我们现在来看老师这个点名过程是如何实现吧:   1、老规矩,我们先定义老师(Teacher)接口类: public interface Teacher {   public Iterator createIterator();   //点名 } 2、具体的老师(ConcreteTeacher)类是对老师(Teacher)接口的实现: public class ConcreteTeacher implements Teacher{   private Object[] present = {"张三来了","李四来了","王五没来"};  //同学出勤集合   public Iterator createIterator(){     return new ConcreteIterator(this);      //新的点名   }   public Object getElement(int index){  //得到当前同学的出勤情况     if(index<present.length){       return present[index];     }     else{       return null;     }   }   public int getSize(){     return present.length;  //得到同学出勤集合的大小,也就是说要知道班上有多少人   } } 3、定义点名(Iterator)接口类: public interface Iterator {   void first();  //第一个   void next();   //下一个   boolean isDone();  //是否点名完毕   Object currentItem();  //当前同学的出勤情况 } 4、具体的点名(ConcreteIterator)类是对点名(Iterator)接口的实现: public class ConcreteIterator implements Iterator{   private ConcreteTeacher teacher;   private int index = 0;   private int size = 0;   public ConcreteIterator(ConcreteTeacher teacher){     this.teacher = teacher;     size = teacher.getSize(); //得到同学的数目     index = 0;   }   public void first(){  //第一个     index = 0;   }   public void next(){ //下一个     if(index<size){       index++;     }   }   public boolean isDone(){ //是否点名完毕     return (index>=size);   }   public Object currentItem(){ //当前同学的出勤情况     return teacher.getElement(index);   } } 5、编写测试类: public class Test {   private Iterator it;   private Teacher teacher = new ConcreteTeacher();   public void operation(){     it = teacher.createIterator();  //老师开始点名     while(!it.isDone()){ //如果没点完       System.out.println(it.currentItem().toString()); //获得被点到同学的情况       it.next();   //点下一个     }   }   public static void main(String agrs[]){     Test test = new Test();     test.operation();   } } 6、说明: A:定义:Iterator模式可以顺序的访问一个聚集中的元素而不必暴露聚集的内部情况。 B:在本例中, 老师(Teacher)给出了创建点名(Iterator)对象的接口,点名(Iterator)定义了遍历同学出勤情况所需的接口。 C:Iterator模式的优点是当(ConcreteTeacher)对象中有变化是,比如说同学出勤集合中有加入了新的同学,或减少同学时,这种改动对客户端是没有影响的。  
 

阅读全文(1636) | 回复(0) | 编辑 | 精华
 

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 
部落窝Blog模板世界部落窝Blog模板世界
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144798238 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号