文档章节

java23中设计模式——行为模式——Iterator(点名篇 )

邓竣
 邓竣
发布于 2016/03/31 11:01
字数 594
阅读 3
收藏 0

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)对象中有变化是,比如说同学出勤

集合中有加入了新的同学,或减少同学时,这种改动对客户端是没有影响的。  


© 著作权归作者所有

邓竣
粉丝 2
博文 30
码字总数 43557
作品 0
成都
程序员
私信 提问
《JavaScript设计模式与开发实践》模式篇(6)—— 命令模式

命令模式是最简单和优雅的模式之一,命令模式中的命令(command)指的是一个执行某些特定事情的指令。 应用场景 有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求...

嗨呀豆豆呢
2018/12/15
0
0
《JavaScript设计模式与开发实践》最全知识点汇总大全

系列文章: 《JavaScript设计模式与开发实践》基础篇(1)—— this、call 和 apply 《JavaScript设计模式与开发实践》基础篇(2)—— 闭包和高阶函数 《JavaScript设计模式与开发实践》模式...

嗨呀豆豆呢
01/04
0
0
《JavaScript设计模式与开发实践》模式篇(12)—— 装饰者模式

在传统的面向对象语言中,给对象添加功能常常使用继承的方式,但是继承的方式并不灵活, 还会带来许多问题:一方面会导致超类和子类之间存在强耦合性,当超类改变时,子类也会随之 改变;另一方...

嗨呀豆豆呢
2018/12/25
0
0
Java 设计模式(14) —— 复合模式

一、复合模式 模式常一起使用,组合在一个设计解决方案中 复合模式在一个解决方案中结合两个或多个模式,能解决一般性或一系列的问题 二、示例 本次设计模式讲解中无代码示例,由于复合模式是...

磊_lei
2018/05/26
0
0
《JavaScript设计模式与开发实践》原则篇(2)—— 最少知识原则

最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这 里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。 单一职责原则指导我们...

嗨呀豆豆呢
2018/12/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
11分钟前
1
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
13分钟前
1
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
44分钟前
6
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
54分钟前
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部