第二十五篇 设计模式--迭代器模式
来源:互联网 发布:python量化 入门 编辑:程序博客网 时间:2024/04/28 06:32
定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
代码:
package iterator_model;import java.util.ArrayList;import java.util.List;/** * * @author naivor *迭代器模式-场景类 */public class IteratorModel {public static void main(String[] args) {List<Object> list=new ArrayList<Object>();list.add("hello");list.add("小明");list.add("老马");list.add("薯条");list.add("下雨");list.add("电脑");ConcreteAggregate aggregate=new ConcreteAggregate(list);ConcreteIterator iterator=new ConcreteIterator(aggregate);Object item=iterator.first();while(!iterator.isDone()){item=iterator.currentItem();System.out.println(item.toString());iterator.next();}}}/** * * @author naivor *迭代器模式-迭代器抽象类 */abstract class Iterator{ public abstract Object first(); public abstract Object next(); public abstract boolean isDone(); public abstract Object currentItem();}/** * * @author naivor *迭代器模式-聚集抽象类 */abstract class Aggregate{public abstract Iterator createIterator();}/** * * @author naivor *迭代器模式-聚集具体类 */class ConcreteAggregate extends Aggregate{private List<Object> items;public ConcreteAggregate(List<Object> items) {this.items=items;}@Overridepublic Iterator createIterator() {// TODO Auto-generated method stubreturn new ConcreteIterator(this);}public int getCount(){return items.size();}public Object getItem(int index){return items.get(index);}}/** * * @author naivor *迭代器模式-迭代器具体类 */class ConcreteIterator extends Iterator{private ConcreteAggregate aggregate;private int current=0;public ConcreteIterator(ConcreteAggregate aggregate) {this.aggregate=aggregate;}@Overridepublic Object first() {return aggregate.getItem(0);}@Overridepublic Object next() {current++;if (current<=aggregate.getCount()) {return aggregate.getItem(current);}return null;}@Overridepublic boolean isDone() {if (current>=aggregate.getCount()) {return true;}return false;}@Overridepublic Object currentItem() {return aggregate.getItem(current);}}
0 0
- 第二十五篇 设计模式--迭代器模式
- C++设计模式[十五]迭代器模式
- 十五、访问者设计模式
- 设计模式(十五)---组合模式
- 设计模式(十五) 命令模式
- 第二篇 设计模式--工厂方法模式
- 第二十四篇 设计模式--备忘录模式
- C++设计模式之十五--Iterator迭代器模式
- 小话设计模式(十五)迭代器模式
- PHP设计模式系列(十五):迭代器模式
- 设计模式十五(责任链模式)
- 十五 设计模式之组合模式
- 设计模式 (十五)观察者模式(Observer)
- 设计模式 (十五)观察者模式(Observer)
- Java设计模式十五:备忘录模式(Memento)
- java设计模式(十五)--桥接模式
- C#设计模式(十五)状态者模式
- 设计模式学习(十五):中介者模式
- 遮罩clippingNode实现标题闪亮特效、类似机关枪瞄准效果、跑马灯效果
- 自己写的从网页上获取并下载图片的方法
- 使用JProfiler进行性能调优
- 尴尬的VXLAN
- shell解析addr2line文件
- 第二十五篇 设计模式--迭代器模式
- 1类之间通信的常用方法Block、Notification、Delegate
- 单件宏
- Rman备份与恢复
- NGUI中TweenScale回调函数设为null时导致的BUG
- C++小数位数格式输出
- Lintcode - Median
- 黑马程序员——网络编程
- oracle编程入门笔记2015-02-05--递归查询