Java 设计模式 之 迭代器模式

http://www.verejava.com/?id=16999127808571

package com.iterator.theory;

import java.util.Arrays;

public class TestIterator
{
    public static void main(String[] args)
    {
        List list=new ArrayList();
        list.add("李阳");
        list.add("王涛");
        list.add("张飒");

        Iterator iter=list.iterator();
        while(iter.hasNext())
        {
            Object obj=iter.next();
            System.out.println(obj);
        }

    }
}

package com.iterator.theory;

public interface Iterator
{
    public boolean hasNext();

    public Object next();
}

package com.iterator.theory;

public class IteratorImpl implements Iterator
{
    private int index;
    private List list;

    public IteratorImpl(List list)
    {
        this.list=list;
    }

    @Override
    public boolean hasNext()
    {
        return index<list.size();
    }

    @Override
    public Object next()
    {
        Object element=null;
        if(index<list.size())
        {
            element=list.get(index);
            index++;
        }

        return element ;
    }

}

package com.iterator.theory;

public interface List
{
    public void add(Object element);

    public Object get(int index);

    public int size();

    public Iterator iterator();
}

package com.iterator.theory;

import java.util.Arrays;

public class ArrayList implements List
{
    private int initCapacit=20;
    private int size;
    private Object[] elementData;

    public ArrayList()
    {
        elementData=new Object[initCapacit];
    }

    @Override
    public void add(Object element)
    {
        if(size<initCapacit)
        {
            elementData[size]=element;
            size++;
        }
        else
        {
            elementData=Arrays.copyOf(elementData, size);
            elementData[size]=element;
            size++;
        }
    }

    @Override
    public Object get(int index)
    {
        return elementData[index];
    }

    @Override
    public int size()
    {
        return size;
    }

    @Override
    public Iterator iterator()
    {
        return new IteratorImpl(this);
    }

}

http://www.verejava.com/?id=16999127808571

原文地址:https://www.cnblogs.com/verejava/p/9237047.html

时间: 2024-10-30 10:45:14

Java 设计模式 之 迭代器模式的相关文章

折腾Java设计模式之迭代器模式

迭代器模式 Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation. 提供一种不公示其底层细节(结构)的情况下能顺序访问聚合对象元素的方法. 其实在java体系中,jdk已经引入了迭代器接口以及对于的容器接口等.就拿迭代器中的角色,在java中找出其对应的类. 具体角色 (1)迭代器角色(Iterator):定义遍

JAVA设计模式之 迭代器模式【Iterator Pattern】

一.概述 提供一种方法来访问聚合对象(容器container),而不用暴露这个对象的内部细节. 二.适用场景 1>遍历访问聚合对象中的元素,而无须暴露它的内容表示,将聚合对象的访问和内部数据的存储分离.使得访问聚合对象时无须了解其内部的实现细节. 2>需要为一个聚合对象提供多种遍历实现. 三.UML类图 四.参与者 1>Iterator(抽象迭代器):它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法,例如:用于获取第一个元素的first()方法,用于访问下一个元素的next()

Java设计模式之迭代器模式

概论 什么是迭代器模式?迭代器模式是提供一种方法访问一个容器对象中的各个元素,而又不需要暴露该对象的细节. 迭代器模式示例 迭代器模式中分为4种角色. ①抽象迭代器 ②具体迭代器 ③抽象容器 ④具体容器 首先我们一个抽象迭代器,抽象迭代器中包含遍历到下一个元素.判断遍历是否已经到了尾部.删除当前指向的元素. 1 public interface Iterator { 2 3 public Object next(); 4 public boolean hasNext(); 5 public bo

浅谈JAVA设计模式之——迭代器模式(interator)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45599951 一.概述 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 二.适用性 1.访问一个聚合对象的内容而无需暴露它的内部表示. 2.支持对聚合对象的多种遍历. 3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代). 三.参与者 1.Iterator 迭代器定义访问和遍历元素的接口. 2.ConcreteItera

java设计模式_迭代器模式

/**  * @Title: Aggregate.java  * @Package com.wangbiao.design  * @Description: TODO   * @author wangbiao     * @date 2014-9-20 下午05:02:00   * @version V1.0  */ package com.wangbiao.design.iterator; import java.io.ObjectInputStream.GetField; import ja

java设计模式--行为型模式--迭代模式

1 迭代器模式 2 概述 3 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 4 5 6 适用性 7 1.访问一个聚合对象的内容而无需暴露它的内部表示. 8 9 2.支持对聚合对象的多种遍历. 10 11 3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代). 12 13 14 参与者 15 1.Iterator 16 迭代器定义访问和遍历元素的接口. 17 18 2.ConcreteIterator 19 具体迭代器实现迭代器接口.

设计模式之迭代器模式(Iterator)

1.定义 迭代器模式提供一种方法访问一个容器对象中的各个元素,而又不需暴露该对象的内部细节. 基本上没有人会单独写一个迭代器,除非是产品性质的开发. 2.通用类图 Iterator抽象迭代器:抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素:next()访问下一个元素:isDone()是否已经访问到底部(Java 叫做hasNext()方法). ConcreteIterator具体迭代器:具体迭代器角色要实现迭代器接口,完成容器元素的遍历. Ag

2018.4.30 设计模式之迭代器模式

设计模式之迭代器模式 1.定义/概念 迭代器模式是Java和.Net编程环境中非常常用的设计模式.这种设计模式用于顺序访问集合对象的元素要知道集合对象的底层表示.迭代器模式属于行为型模式 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 2.角色和定义 ● Iterator抽象迭代器 抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,isDone()是否已经访问

Python进阶:设计模式之迭代器模式

在软件开发领域中,人们经常会用到这一个概念--"设计模式"(design pattern),它是一种针对软件设计的共性问题而提出的解决方案.在一本圣经级的书籍<设计模式:可复用面向对象软件的基础>(1991年,Design Patterns - Elements of Reusable Object-Oriented Software)中,它提出了23种设计模式.迭代器模式就是其中的一种,在各种编程语言中都得到了广泛的应用. 本文将谈谈 Python 中的迭代器模式,主要内