`
zzq19860626
  • 浏览: 264131 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
B20df9e2-fb3d-3644-9f72-c1619842f682
设计模式学习笔记
浏览量:179863
87eaf24f-812a-3463-8e65-e3197d2ad8c2
java虚拟机
浏览量:26567
社区版块
存档分类
最新评论

JAVA设计模式学习25——迭代器模式

阅读更多
迭代器 (Iterator)模式:迭代器模式提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。

迭代器模式由以下角色组成:

迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口。

具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置。

容器角色(Container):容器角色负责提供创建具体迭代器角色的接口。

具体容器角色(Concrete Container):具体容器角色实现创建具体迭代器角色的接口。这个具体迭代器角色与该容器的结构相关。

迭代器设计模式结构如如下:

从结构上可以看出,迭代器模式在客户与容器之间加入了迭代器角色。迭代器角色的加入,就可以很好的避免容器内部细节的暴露,而且也使得设计符号“单一职责原则”。

模拟代码如下:

抽象迭代器类:

package designPattern.iterator;

public interface Iterator<T> {

   public T next();
   public boolean hasNext();
}

 

 实现迭代器类:

package designPattern.iterator;

import java.util.ArrayList;
import java.util.List;

public class ConcreteIterator<T> implements Iterator<T> {

  private List<T> list = new ArrayList<T> ();
  private int cursor =0;
  public ConcreteIterator(List<T> list){
   this.list = list;
  }
  public boolean hasNext() {
   if(cursor==list.size()){
    return false;
   }
   return true;
  }
  public T next() {
   T obj = null;
   if(this.hasNext()){
    obj = this.list.get(cursor++);
   }
   return obj;
  }
}

 抽象聚集类:

package designPattern.iterator;

public interface Aggregate<T> {
 public void add(T obj);
 public void remove(T obj);
 public Iterator<T> iterator();
}

 实现聚集类:

package designPattern.iterator;

import java.util.ArrayList;
import java.util.List;

public class ConcreteAggregate <T>implements Aggregate<T>{
 private List <T>list = new ArrayList<T>();
 public void add(T obj) {
   list.add(obj);
 }

 public Iterator<T> iterator() {
     return new ConcreteIterator<T>(list);
 }

 public void remove(Object obj) {
     list.remove(obj);
 }
}

 测试类:

package designPattern.iterator;

public class Client {

 public static void main(String[] args){
  Aggregate<String> ag = new ConcreteAggregate<String>();
  ag.add("red");
  ag.add("green");
  ag.add("blue");
  Iterator<String>it = ag.iterator();
  while(it.hasNext()){
     String str = (String)it.next();
     System.out.println(str);
  }
 }

}

上面的代码基本上模拟了迭代器模式的实现,当然java中已经完整的实现了所有集合的迭代。迭代器的作用就是把集合的管理和迭代算法分离,体现了单一职责原则,这也是这个模式的主要作用。

 

 

设计模式系列目录:

  • 大小: 22.5 KB
5
2
分享到:
评论
1 楼 hialaric 2013-11-21  
这个模式好像很简单,明白了

相关推荐

    JAVA设计模式学习10——组合模式

    总之,JAVA设计模式中的组合模式提供了一种优雅的方式来处理对象的树形结构,使得我们可以在处理单个对象和整个集合时保持代码的简洁和一致性。通过理解和熟练运用这种模式,开发者可以更好地设计和维护复杂的软件...

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

    详解Java设计模式——迭代器模式 迭代器模式是Java设计模式的一种,主要用于解决聚合对象的遍历问题。该模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又无须暴露该对象的内部表示。通过使用迭代器模式,...

    JAVA 设计模式 工厂模式 代理模式 迭代模式 责任链模式 源码

    以下是关于JAVA设计模式中提及的四种模式——工厂模式、代理模式、迭代器模式以及责任链模式的详细说明。 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与应用,特别是针对刘伟教授的相关课程的课后习题及模拟试题的解答。 设计模式分为三大类:创建型、结构型和行为型模式。...

    《Java设计模式》刘伟 课后习题及模拟试题答案.rar

    《Java设计模式》是刘伟老师的一本经典教材,它深入浅出地讲解了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的通用解决方案,是软件开发中的智慧结晶。这本书的课后习题和...

    JAVA迭代器模式.pptx

    迭代器模式是Java设计模式中的重要组成部分,它不仅简化了容器的接口,隐藏了容器的实现细节,还提供了对容器元素的灵活访问方式。通过使用迭代器模式,可以提高代码的可读性和可维护性,同时也增强了系统的灵活性和...

    java设计模式经典教程

    ### Java设计模式经典教程知识点概览 #### 一、设计模式概述 设计模式是一种软件设计方法,它为软件开发者提供了一种标准化的方式去解决常见的软件设计问题。设计模式的使用可以提高代码的可读性和可维护性,同时...

    设计模式(十七)——迭代器模式(Iterator Pattern)

    如果我们的集合元素是用不同的方式实现的,有数组,还有 java 的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    java设计模式(23种设计模式大全)

    根据提供的标题、描述以及部分内容,本文将深入探讨Java设计模式,并着重分析23种常见的设计模式,以帮助Java程序员更好地理解和应用这些模式。 ### Java设计模式概述 Java设计模式是面向对象软件设计的一种通用可...

    Java与模式(闫宏)

    《Java与模式》是闫宏大师的一部经典之作,它将古老的哲学智慧——道德经的智慧,巧妙地融入到现代编程语言Java的设计模式之中。这本书不仅深入浅出地讲解了23种经典的设计模式,还提供了丰富的实践案例,旨在帮助...

    java设计模式(1)

    ### Java设计模式(1)——理解与应用 #### 一、设计模式概述 设计模式是在软件工程领域中,为了应对特定问题或情境而形成的最佳实践集合。这些模式可以帮助开发者更高效地解决常见问题,提高代码的可重用性和可...

    115个Java面试题和答案——终极列表

    Java面试题是每个Java开发者在求职过程中必须面对的挑战,涵盖范围广泛,从基础概念到高级特性和设计模式。这份终极列表包含115个Java面试题和答案,旨在帮助求职者全面准备,以期在面试中表现出色。以下是部分核心...

    设计模式——JAVA.docx

    ### JAVA设计模式总结之23种设计模式及六大原则 #### 一、设计模式之六大原则 ##### 总原则:开闭原则(Open Close Principle) 开闭原则是设计模式中最核心的原则之一,它强调的是软件实体(类、模块、函数等)...

    design-pattern-java.pdf

    设计模式趣味学习(复习) 设计模式趣味学习(复习) 设计模式与足球(一) 设计模式与足球(二) 设计模式与足球(三) 设计模式与足球(四) 设计模式综合应用实例 设计模式综合应用实例 多人联机射击游戏 多人...

    java的设计模式 《设计模式-java语言中的应用.pdf》

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板或蓝图。...通过阅读《设计模式——Java语言中的应用》这本书,你可以更深入地学习和掌握这些模式的细节及其在实际开发中的应用。

    JAVA设计模式(中文).chm

    《JAVA设计模式(中文).chm》是一部专为Java开发者准备的设计模式指南,它深入浅出地阐述了软件工程中的重要概念——设计模式。设计模式是解决常见编程问题的成熟解决方案,是经验丰富的开发者们在实践中总结出的最佳...

    Java和Android源码设计模式

    #### 前言:迈向精通之路——设计模式的重要性 在软件开发领域,设计模式被视为提升代码质量和可维护性的关键工具。本文将深入探讨Java和Android开发中常用的设计模式,并结合实际案例进行解析,帮助读者理解和应用...

    java设计模式+算法

    "Java设计模式-图解-附代码"可能会通过图形化的方式,帮助读者直观理解各种设计模式,并提供了具体的Java代码示例,这对于初学者来说尤其有帮助。书中可能涵盖了23种经典设计模式,如工厂模式、建造者模式、原型模式...

Global site tag (gtag.js) - Google Analytics