Android设计模式-迭代器模式

UML关系简单介绍
UML简单使用的介绍
创建型设计模式
Android设计模式-单例模式
Android设计模式-工厂模式
Android设计模式-抽象工厂模式
Android设计模式-建造者模式
Android设计模式-原型模式
结构型设计模式
Android设计模式-代理模式
Android设计模式-装饰模式
Android设计模式-适配器模式
Android设计模式-组合模式
Android设计模式-门面模式
Android设计模式-桥接模式
Android设计模式-享元模式
行为型设计模式
Android设计模式-策略模式
Android设计模式-命令模式
Android设计模式-责任链模式
Android设计模式-模版方法模式
Android设计模式-迭代器模式
Android设计模式-观察者模式
Android设计模式-备忘录模式
Android设计模式-中介者模式
Android设计模式-访问者模式
Android设计模式-状态模式
Android设计模式-解释器模式

1.定义

它提供一种方法访问一个容器对象中的各个元素,又不需暴露该对象的内部细节。

2.迭代器模式UML图

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

角色介绍

  • Aggregate 抽象容器 其内会提供一个类似createiterator()这样的方法。
  • Iterator 抽象迭代器 定义访问和遍历的元素的接口。(hasnext类似于图中的isdone)
  • ConcreteIterator 具体迭代器 实现自抽象迭代器,完成容器元素的遍历
  • ConcreteAggregate 具体容器 实现抽象容器中的方法

3.简单实现

3.1 抽象容器

public interface Aggregate {
//添加元素
    void add(Object o);
//移除元素
    void remove(Object o);
//得到迭代器,由迭代器进行遍历
    Iterator iterator();
}

3.2 具体容器

public class ConcreteAggregate implements Aggregate {
 //容纳对象的容器
    private Vector vector=new Vector();
    @Override
    public void add(Object o) {
        this.vector.add(o);
    }

    @Override
    public void remove(Object o) {
        this.vector.remove(o);
    }
//返回迭代器对象
    @Override
    public Iterator iterator() {
        return new ConcreteIterator(vector);
    }
}

3.3抽象迭代器

public interface Iterator {
    Object next();
    boolean hasNext();
}

3.4具体迭代器

public class ConcreteIterator implements Iterator {
 
    private Vector vector=new Vector();
//定义游标
    private int corsor=0;

    public ConcreteIterator(Vector vector) {
        this.vector = vector;
    }

    @Override
    public Object next() {
        Object object=null;
        if (this.hasNext()){
            object=vector.get(corsor++);
        }else {
            object=null;
        }
        return object;
    }

    @Override
    public boolean hasNext() {
        if (this.corsor==this.vector.size()) {
            return false;
        }else {
            return true;
        }
    }
}

对迭代器感觉没什么好说的。。。大家几乎都是用不到对。。从例子中看到,使用了迭代器后,貌似变得更复杂了,实际上是因为我们平常使用的循环什么的,其list已经实现了iterator()方法,所以用起来我们感觉很方便,但是其内部,大致也是这样的。

4.总结

迭代器模式提供了遍历容器的方便性,容器只要关心添加和移除元素就行了,遍历的操作交给迭代器。
额,这个模式的确没什么说的感觉。。大家现在也没有自己手写迭代器的了。。

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