设计模式(十六)----- 迭代器模式(Iterator)----(JAVA版)
来源:互联网 发布:C语言 函数库 下载 编辑:程序博客网 时间:2024/06/06 14:26
迭代器模式
迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。
适用性
1.访问一个聚合对象的内容而无需暴露它的内部表示
2.支持对聚合对象的多种遍历
3.为遍历不同的聚合结构提供一个统一的接口(支持多态迭代)
参与者
1.Iterator
迭代器定义访问和遍历元素的接口
2.ConcreteIterator
实现迭代器接口。对该聚合遍历时跟踪当前位置
3.Aggregate
聚合定义创建相应迭代器对象的接口
4.ConcreteAggregate
实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当实例
类图
一个例子:
1.Iterator
public interface Iterator{ Object next(); void first(); void last(); boolean hasNext();}
2.ConcreteIterator
public class IteratorImpl implements Iterator{ private List list; private int index; public IteratorImpl(List list){ index = 0; this.list = list; } public void first(){ index = 0; } public void last(){ index = list.getSize(); } public Object next(){ Object obj = list.get(index); index++; return obj; } public boolean hasNext(){ return index<list.getSize(); }}
3.Aggregate
public interface List{ Iterator iterator(); Object get(int index); int getSize(); void add(Object obj);}
4.ConcreteAggregate
public class ListImpl implements List{ private Object[] list; private int index; private int size; public ListImpl(){ index = 0; size = 0; list = new Object[100]; } public Iterator iterator(){ return new IteratorImpl(this); } public Object get(int index){ return list[index]; } public int getSize(){ return list.size();//return this.size(); } public void add(Object obj){ list[index++]=obj; size++; }}
5.Test
public class Test{ public static void main(String[] args){ List list = new ListImpl(); list.add("a"); list.add("b"); list.add("c"); //第一种迭代方法 Iterator it = list.iterator(); while(it.hasNext()){ System.out.println(it.next()); } System.out.println("=========="); //第二种迭代方式 for(int i=0;i<list.getSize();i++){ System.out.println(list.get(i)); } }}
result
a
b
c
==========
a
b
c
参考资料
1.http://blog.csdn.net/chenhuade85/article/details/8146992
- 设计模式(十六)----- 迭代器模式(Iterator)----(JAVA版)
- JAVA--迭代子模式(Iterator)--设计模式十六
- C++设计模式之十六:Iterator 迭代器
- 浅谈Java设计模式(十六)迭代子模式(Iterator)
- 设计模式实现(十六)---迭代器模式(Iterator)
- 设计模式之十六:迭代器模式(Iterator)
- Java开发中的23种设计模式之十六:迭代器模式(Iterator)
- Java设计模式《十六》迭代器模式
- Java设计模式-----Iterator迭代器模式
- JAVA设计模式---Iterator迭代器模式
- Java设计模式-----Iterator迭代器模式
- JAVA设计模式六--Iterator(迭代器模式)
- java设计模式-迭代器模式(Iterator)
- JAVA设计模式—迭代器模式(Iterator)
- Java设计模式五:迭代器模式(Iterator)
- JAVA设计模式六:--Iterator(迭代器模式)
- java设计模式之迭代器模式iterator
- 【Java设计模式】(1)迭代器模式Iterator
- 九度1077 最大序列和
- 多线程编程模型
- Adobe AIR教程:iOS应用内付费简介和准备流程
- 整理综合之一 ----从Bytecode到BasicBlock
- Android之ExpandableListView
- 设计模式(十六)----- 迭代器模式(Iterator)----(JAVA版)
- Who do you think is the best coder, and why?
- HTML001——meta标签
- Android之sensor 传感器
- 安全卫士第四天--23黑名单拦截
- 1022 Train Problem 1 栈的运用
- 面相对象设计中组合与聚合详解
- 原创分析:iOS 中使用 Mobile Installation 安装 IPA(使用iTunes/AppStore一样的安装API)
- 安全卫士第四天--23拦截响一声的电话功能