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

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

package Iterator;

/**
 * 迭代器接口
 * @param <T>
 */
public interface MyIterator<T> {

    /**
     *  是否还有下一个元素
     * @return true 表示有,false 表示没有
     */
    boolean hasNext();

    /**
     * 返回当前位置的元素并将位置移动到下一位
     * @return
     */
    T next();
}
package Iterator;

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

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


    /**
     * 模拟用一个 List
     */
    private List<T> mList = new ArrayList<>();

    private int cursor = 0;


    public ConcreteIterator(List<T> list) {
        this.mList = list;
    }

    @Override
    public boolean hasNext() {
        return cursor != mList.size();
    }

    @Override
    public T next() {
        //定义一个临时变量
        T obj = null;
        if (this.hasNext()) {
            obj = this.mList.get(cursor++);
        }
        return obj;
    }
}

package Iterator;


public interface Aggregate<T> {

    /**
     * 添加一个对象
     * @param t
     */
    void add(T t);

    /**
     * 删除的对象
     * @param t
     */
    void remove(T t);

    /**
     * 获取容器的迭代器
     * @return
     */
    MyIterator<T> iterator();

}

 

package Iterator;

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

public class ConcreteAggregate<T> implements Aggregate<T>{

    /**
     * 模拟具体容器
     */
    private List<T> mLists = new ArrayList<>();

    @Override
    public void add(T t) {
        mLists.add(t);
    }

    @Override
    public void remove(T t) {
        mLists.remove(t);

    }

    @Override
    public MyIterator<T> iterator() {
        return new ConcreteIterator<T>(mLists);
    }
}

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

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

  • myIterator: 迭代器接口。迭代器接口负责定义、访问和遍历元素的接口。
  • Concrete Iterator: 具体迭代器类。具体迭代器类的目的主要是实现迭代器接口,并记录遍历的当前位置。
  • Aggregate: 容器接口。容器接口负责提供创建具体迭代器角色的接口。
  • Concrete Aggregate: 具体容器类。具体迭代器角色与该容器相关联。

 

上一篇:Android MVP模式深入实践探索(一),我浪费了自己职业生涯的黄金5年


下一篇:Springcloud OAuth 授权码踩坑系列(一)