网站首页弹出图片,加盟哪家装修公司好,济宁网站建设排行,网站开发kxhtmljava设计模式迭代器模式大家好#xff0c;在本文中#xff0c;我们将检查Iterator Pattern 。 我知道你们中许多人已经使用过一种设计模式#xff0c;但是也许您没有意识到它是模式#xff0c;或者不知道它的巨大价值。 根据《 Head First Design 》一书#xff1a; 迭代… java设计模式迭代器模式 大家好在本文中我们将检查Iterator Pattern 。 我知道你们中许多人已经使用过一种设计模式但是也许您没有意识到它是模式或者不知道它的巨大价值。 根据《 Head First Design 》一书 迭代器模式提供了一种在不暴露其底层表示的情况下顺序访问聚合对象的元素的方法。 哇啊 好吧它表示无论您使用什么数据结构数组列表哈希表等如果实现此模式都可以以相同的方式遍历它。 它为您提供了一种统一的方法来访问数据结构聚合的元素但您不必知道哪种数据结构 您正在遍历...很好 而且它在Iterator对象上而不是在数据结构上设置迭代的责任从而简化了数据结构中的编码。 让我们检查一下Iterator模式的经典类图 Iterator Pattern的实际类图有一些更改特别是在Iterator类接口中这里我们将在稍后看到不同的方法但是首先让我们回顾一下以前的每个类或接口 Aggregate 这是我们数据结构的基类或接口您可以将其视为java.util.Collection接口它为集合类定义了许多方法。 ConcreteAggregate 这是我们将要迭代的具体数据结构例如java.util.ArrayList java.util.Vector等。 迭代器 迭代器的基类或接口。 您可以通过java.util.Iterator在Java 中找到一个。 您会注意到Java版本有不同的方法我们将在本文后面讨论。 在这里您定义了遍历数据结构所需的de方法。 ConcreteIterator 当您要遍历不同的数据结构时需要不同的迭代器。 因此concreteIterator是要遍历的数据结构的Iterator。 现在让我们看一下Iterator Pattern的Java实现。 下图是使用Architexa的免费代码理解工具生成的 它显示了Java Collections Framework某些类之间的关系在其中我们可以看到类似于经典类图的结构 上图仅显示了Java模式的一种实现还有很多但它们始终使用java.util.Iterator接口 这是在用Java进行编码时应在Iterator Pattern的实现中使用的接口。 让我们比较两个图 经典图 Java示例 骨料 java.util.AbstractList 混凝土骨料 java.util.ArrayList java.util.Vector 迭代器 java.util.Iterator ConcreteIterator java.util.AbstractList上的私有内部类 您在JavaDocs中看不到此类但在源代码中有该类java.util.Itr 请注意Java示例中Iterator对象的方法与经典类图中的方法不同 没有 First方法。 如果需要转到第一个元素则必须实例化一个新的迭代器。 IsDone方法已重命名为 hasNext。 Next和 CurrentItem已合并到 next中。 remove方法已添加。 因此如果您不得不使用不同的数据结构并且需要一种统一的方式遍历它们和/或访问它们的项请考虑一下迭代器模式 //... in a class/*** Traverse a list, hashtable, vector, etc. what ever that implements* the Iterator Pattern*/public void traverse(Iterator iter){while(iter.hasNext()){System.out.println(iter.next());}} 当然您始终必须为数据结构创建ConcreteIterator类但是如果您使用的是 Java Collections Framework 它已经完成。 最后一件事请记住最重要的OO原理 始终使用满足您需求的最简单解决方案即使它不包含pattern 。 资源 Freeman Eric和Freeman Elisabeth和Sierra Kathy和Bates Bert2004。 头先设计模式 。 美利坚合众国OReilly MediaInc. 参考来自Java和ME博客的JCG合作伙伴 Alexis Lopez的Iterator Pattern和Java 。 翻译自: https://www.javacodegeeks.com/2013/01/iterator-pattern-and-java.htmljava设计模式迭代器模式