gpt4 book ai didi

详解Java设计模式——迭代器模式

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解Java设计模式——迭代器模式由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

迭代子模式 。

顾名思义,迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。这句话包含两层意思:一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问。我们看下关系图:

详解Java设计模式——迭代器模式

这个思路和我们常用的一模一样,MyCollection中定义了集合的一些操作,MyIterator中定义了一系列迭代操作,且持有Collection实例,我们来看看实现代码: 两个接口:

public interface Collection {   public Iterator iterator();   /*取得集合元素*/  public Object get(int i);   /*取得集合大小*/  public int size(); } public interface Iterator {  //前移  public Object previous();   //后移  public Object next();  public boolean hasNext();   //取得第一个元素  public Object first(); } 

两个实现:

public class MyCollection implements Collection {   public String string[] = {"A","B","C","D","E"};  @Override  public Iterator iterator() {  return new MyIterator(this);  }   @Override  public Object get(int i) {  return string[i];  }   @Override  public int size() {  return string.length;  } } public class MyIterator implements Iterator {   private Collection collection;  private int pos = -1;   public MyIterator(Collection collection){  this.collection = collection;  }   @Override  public Object previous() {  if(pos > 0){  pos--;  }  return collection.get(pos);  }   @Override  public Object next() {  if(pos<collection.size()-1){  pos++;  }  return collection.get(pos);  }   @Override  public boolean hasNext() {  if(pos<collection.size()-1){  return true;  }else{  return false;  }  }   @Override  public Object first() {  pos = 0;  return collection.get(pos);  }  } 

测试类:

public class Test {   public static void main(String[] args) {  Collection collection = new MyCollection();  Iterator it = collection.iterator();   while(it.hasNext()){  System.out.println(it.next());  }  } } 

此处我们貌似模拟了一个集合类的过程,感觉是不是很爽?其实JDK中各个类也都是这些基本的东西,加一些设计模式,再加一些优化放到一起的,只要我们把这些东西学会了,掌握好了,我们也可以写出自己的集合类,甚至框架! 。

介绍 意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示.

主要解决:不同的方式来遍历整个整合对象.

何时使用:遍历一个聚合对象.

如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象.

关键代码:定义接口:hasNext, next.

应用实例:JAVA 中的 iterator.

优点:

1、它支持以不同的方式遍历一个聚合对象.

2、迭代器简化了聚合类.

3、在同一个聚合上可以有多个遍历.

4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码.

缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性.

使用场景:

1、访问一个聚合对象的内容而无须暴露它的内部表示.

2、需要为聚合对象提供多种遍历方式.

3、为遍历不同的聚合结构提供一个统一的接口.

注意事项:迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据.

以上所述是小编给大家介绍的Java设计模式——迭代器模式详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。

最后此篇关于详解Java设计模式——迭代器模式的文章就讲到这里了,如果你想了解更多关于详解Java设计模式——迭代器模式的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com