Java设计模式----迭代器模式

场景

  • 提供一种可以遍历聚合对象的方式。又称为游标cursor模式
  • 聚合对象:存储数据
  • 迭代器:遍历数据

结构

Java设计模式----迭代器模式_第1张图片
迭代器模式

实现

package iterator;

// 自定义迭代器接口
public interface MyIterator {
    void first();       // 将游标指向第一个
    void next();        // 将游标指向下一个
    boolean hasNext();  // 判断是否存在下一个

    boolean isFirst();
    boolean isLast();

    Object getCurrentObject();  // 获取当前游标指向的对象
}
package iterator;

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

// 自定义聚合类
public class ConcreteMyAggregte {
    private List list = new ArrayList();

    public void addObject(Object o){
        list.add(o);
    }

    public void removeObject(Object o){
        list.remove(o);
    }

    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }

    public MyIterator createIterator(){
        return new ConcreteIterator();
    }

    // 使用内部类定义迭代器,可以直接使用外部类的属性
    private class ConcreteIterator implements MyIterator{
        private int cursor;         // 定义游标用于记录遍历时的位置
        private int size = list.size();
        public void first() {
            cursor = 0;
        }

        public void next() {
            if(cursor < size){
                cursor++;
            }
        }

        public boolean hasNext() {
            return cursor < size;
        }

        public boolean isFirst() {
            return cursor == 0;
        }

        public boolean isLast() {
            return cursor == size-1;
        }

        public Object getCurrentObject() {
            return list.get(cursor);
        }
    }
}
 
 

开发中常见场景

  • JDK内置的迭代器(List/Set)

你可能感兴趣的:(Java设计模式----迭代器模式)