23种设计模式-iterator迭代器模式(java)

76 阅读2分钟

什么是迭代器模式?

迭代器模式 (Iterator Pattern) 是一种行为型设计模式,它允许你将数据组织为可迭代的形式,并且能够对数据进行迭代、遍历、遍历序列等操作。

迭代器模式是如何实现的?

定义一个接口来表示数据的可迭代形式,然后实现这个接口的具体类表示不同的数据结构,例如数组、链表、树等。客户端可以使用迭代器模式来访问这些数据结构,并执行各种迭代操作,例如遍历、下一次迭代、暂停、恢复等

迭代器模式的好处是什么?

迭代器模式的关键是使数据结构透明,从而使客户端不依赖于具体的数据结构类型。这样,客户端就可以使用通用的迭代器接口来访问不同的数据结构,而不必了解底层的数据结构类型。同时也可以提高代码的可重用性,减少代码的耦合度,提高代码的可读性和可维护性。它常用于数据结构和算法的设计中。

一个简易的迭代器代码实现

自定义一个集合容器,可以往容器里面一直添加数据,添加完成后可以遍历容器将数据取出来。

public interface Iterator_ {

    Object next();

    boolean hasNex();

}
public interface Collection_<T> {

    void add(T t);

    T get(int index);

    Iterator_ iterator();
}
import java.lang.reflect.Array;
import java.util.Arrays;

public class ArrayList<T extends Object> implements  Collection_<T>{
    Object[] list;
    int size = 0;
    public ArrayList() {
        list = new Object[15];
    }

    @Override
    public void add(T t) {
        if(size >=list.length){
            Object[] tmp = new Object[list.length*2];
            tmp = Arrays.copyOf(list, list.length);
            list = tmp;
        }
        list[size] = t;
        size++;
    }

    @Override
    public T get(int index) {
        return null;
    }

    @Override
    public Iterator_ iterator() {
        return new Itr();
    }

    private  class Itr implements Iterator_ {
        int itrSize =0;
        @Override
        public Object next() {
            Object o = list[itrSize];
            itrSize++;
            return 0 ;

        }

        @Override
        public boolean hasNex() {
            if(itrSize < size ){
                return true;
            }
            return false;
        }
    }
}

扩展点: 数据在计算机内存或磁盘等存储介质上的具体表示方式只存在两种物理结构,一种是连续的数组结构,另一种是链式结构,诸如数,hash表,集合结构都是依托于物理结构实现的逻辑结构,在存储介质上本身事不存在的。