知识大全 设计模式-行为型-迭代器模式(Iterator)

Posted

篇首语:形成天才的决定因素应该是勤奋-郭沫若本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 设计模式-行为型-迭代器模式(Iterator)相关的知识,希望对你有一定的参考价值。

设计模式-行为型-迭代器模式(Iterator)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  概述

  给定一个语言 定义它的文法的一种表示 并定义一个解释器 这个解释器使用该表示来解释语言中的句子

  适用性

   访问一个聚合对象的内容而无需暴露它的内部表示

   支持对聚合对象的多种遍历

   为遍历不同的聚合结构提供一个统一的接口(即 支持多态迭代)

  参与者

   Iterator

  迭代器定义访问和遍历元素的接口

   ConcreteIterator

  具体迭代器实现迭代器接口

  对该聚合遍历时跟踪当前位置

   Aggregate

  聚合定义创建相应迭代器对象的接口

   ConcreteAggregate

  具体聚合实现创建相应迭代器的接口 该操作返回ConcreteIterator的一个适当的实例

  类图

   

  示例代码:

  package sql actioned;

  import java util ArrayList;

  import java util List;

  /**

  * 迭代器模式 实现示例

  * @author sean

  */

  interface IIterator<T>

  T next();

  void first();

  void last();

  boolean hasNext();

  

  class IIteratorImpl<T> implements IIterator<T>

  private IList<T> list;

  private int index;

  public IIteratorImpl (IList<T> list)

  index = ;

  this list = list;

  

  @Override

  public T next()

  T t = list get(index);

  index++;

  return t;

  

  @Override

  public void first()

  index = ;

  

  @Override

  public void last()

  index = list size();

  

  @Override

  public boolean hasNext()

  return index < list size();

  

  

  interface IList<T>

  IIterator<T> iterator();

  T get(int index);

  int size();

  void add(T obj);

  

  class IListImpl<T> implements IList<T>

  private List<T> list;

  private int index;

  public IListImpl()

  list = new ArrayList<T>();

  index = ;

  

  @Override

  public IIterator<T> iterator()

  return new IIteratorImpl<T> (this);

  

  @Override

  public T get(int index)

  return list get(index);

  

  @Override

  public int size()

  return list size();

  

  @Override

  public void add(T obj)

  list add(obj);

  

  

  public class IteratorTest

  public static void main(String[] args)

  // ways of iteration

  IList<String> list = new IListImpl<String>();

  list add( a );

  list add( b );

  list add( c );

  // st way

  System out println( using iterator to traverse: );

  IIterator<String> iter = erator();

  while (iter hasNext())

  System out println(iter next());

  

  // nd way

  System out println( using list to traverse: );

  for (int i= ; i<list size(); i++)

  System out println(list get(i));

  

  

  

  结果:

   using iterator to traverse:

  a

  b

  c

   using list to traverse:

  a

  b

cha138/Article/program/Java/gj/201311/27448

相关参考