知识大全 设计模式-行为型-迭代器模式(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

相关参考

知识大全 Java设计模式之迭代器模式

Java设计模式之迭代器模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一引言  迭代这个名词对

知识大全 php设计模式介绍之迭代器模式

  《PHP设计模式介绍》第八章迭代器模式  类中的面向对象编程封装应用逻辑类就是实例化的对象每个单独的对象都有一个特定的身份和状态单独的对象是一种组织代码的有用方法但通常你会处理一组对象或者集合  

知识大全 老生常谈:迭代器模式

    有很多方法可以把对象堆起来成为一个集合你可以把它们放进数组堆栈列表或者是散列表中这是你的自由    迭代器模式定

知识大全 Java设计模式之Iterator模式介绍

Java设计模式之Iterator模式介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!所谓Ite

知识大全 架构模式-界面组装器模式

  本文提出了一种界面设计中的架构模式界面组装器模式它致力于分解界面将界面和组装行为解耦将界面逻辑处理与领域逻辑处理解耦这样我们在开发GUI胖客户端界面应用时可以从众多的界面控制管理中解脱出来而专注于

知识大全 foreach和yield

  foreach  foreach无需要知道集合中元素个数就可以迭代集合中的元素它其实是迭代器模式的一个包装就语言层面来说是while的另一种形式  usingSystem;  usingSyste

知识大全 C#迭代器

C#迭代器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  迭代器是C#中的新功能迭代器是方法ge

知识大全 struts2迭代不同对象的测试

  在平时使用s:iterator这个迭代标签一般我们都是把一个相同类型的多个对象放入一个集合当中那么是否可以放入不相同的对象来迭代呢?日常工作有时候可能是需要这样来简化程序的我今天测试了一下好像完全

知识大全 java设计模式三大块讲解

   在java的设计模式中我大意分为三块创建型模式结构型模式行为模式对其进行了相对详细和幽默的风格讲解   一创建型模式 &nb

知识大全 讲解Oracle优化器的优化方式和优化模式

讲解Oracle优化器的优化方式和优化模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Ora