迭代器模式(Iterator)
来源:互联网 发布:淘宝海蝶hifi音乐会馆 编辑:程序博客网 时间:2024/06/18 02:01
情景:乘车买票,不管你是谁!
定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
结构图:
![](file:///C:\Users\A45VD\AppData\Roaming\Tencent\Users\837415907\QQ\WinTemp\RichOle\V}6AM7B](9LAX6V]53O3VJ8.png)
interface Iterator {boolean hasNext();Object next();}
interface Aggreagate {//创建迭代器Iterator createIterator();}public class ConcreteIterator implements Iterator{private ConcreteAggregate ca; //定义一个具体聚合对象private int currentIndex = 0;public ConcreteIterator(ConcreteAggregate ca) {//初始化将具体的聚合对象传入this.ca = ca;}@Overridepublic boolean hasNext() {if (currentIndex < ca.getList().size()) {return true;}return false;}@Overridepublic Object next() {Object o = ca.getList().get(currentIndex);currentIndex++;return o;}}public class ConcreteAggregate implements Aggreagate{//用list存放聚合对象private List<Object> list = new ArrayList<Object>();public List<Object> getList() {return list;}public void setList(List<Object> list) {this.list = list;}@Overridepublic Iterator createIterator() {return new ConcreteIterator(this);}}//反向遍历public class ConcreteIteratorDesc implements Iterator{private ConcreteAggregate ca;private int current = 0;public ConcreteIteratorDesc(ConcreteAggregate a) {this.ca = a;current = ca.getList().size() - 1;}@Overridepublic boolean hasNext() {if (current >= 0) {return true;}return false;}@Overridepublic Object next() {Object o = ca.getList().get(current);current--;return o;}}public class Client {public static void main(String[] args) {ConcreteAggregate a = new ConcreteAggregate();a.getList().add("1");a.getList().add("2");a.getList().add("3");//Iterator iterator = new ConcreteIteratorDesc(a);Iterator iterator = new ConcreteIterator(a);while (iterator.hasNext()) {Object o = iterator.next();System.out.println(o + " ");}}}
总的来说,迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样不仅可以做到不暴露集合内部结构,又可以让外部代码透明地访问集合内部的数据。
0 0
- 迭代器模式(Iterator Pattern)
- 迭代器(Iterator)模式
- 迭代器模式(Iterator pattern)
- 迭代器模式(Iterator Pattern)
- 迭代器模式(Iterator pattern)
- 迭代器模式(Iterator)
- Iterator(迭代器)模式
- 迭代器模式(Iterator pattern)
- Iterator 迭代器模式
- 迭代器模式(Iterator pattern)
- 设计模式 -- Iterator(迭代器)
- 迭代器模式(Iterator)
- 24.迭代器模式--Iterator
- 迭代器模式(Iterator)
- iterator 迭代器模式
- 迭代器模式(Iterator Pattern)
- 迭代器模式(Iterator)
- 迭代器模式【ITERATOR PATTERN 】
- 2.7-2.8 数值自乘求解 C实现
- 深入浅出学习struts1框架(四):从MVC模式代码认识struts1框架
- HDU 2544 最短路(最短路入门)
- java修改项目名称
- vim java 编辑设置
- 迭代器模式(Iterator)
- CoreGraphics
- 我们爱你是因为你朋友
- 信号量优先级反转及防止反转的天花板和继承策略
- opencv学习笔记--ml 【1】
- POJ 题目1511 Invitation Cards(最短路)
- Fortran_变量(二)
- 深入浅出学习struts1框架(五)--正式进入struts1框架学习,从一个实例开始
- POM文件属性