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图

角色介绍
- 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.总结
迭代器模式提供了遍历容器的方便性,容器只要关心添加和移除元素就行了,遍历的操作交给迭代器。
额,这个模式的确没什么说的感觉。。大家现在也没有自己手写迭代器的了。。
网友评论