迭代器模式
来源:互联网 发布:ubuntu14.04安装php 编辑:程序博客网 时间:2024/05/18 13:25
1类图
2定义
提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。
3应用场景
遍历一个容器对象时
4迭代器接口
public interface Iterator<E> { boolean hasNext(); E next();}
5具体迭代器类
public class ConcreteIterator<E> implements Iterator<E>{ List<E> list = new ArrayList<>(); private int cursor = 0; public ConcreteIterator(List<E> list){ this.list = list; } @Override public boolean hasNext() { // TODO Auto-generated method stub return cursor != list.size(); } @Override public E next() { // TODO Auto-generated method stub E obj = null; if(this.hasNext()){ obj = this.list.get(cursor++); } return obj; }}
6容器接口
public interface Aggregate<E> { void add(E obj); void remove(E obj); Iterator<E> itrerator();}
7具体容器类
public class ConcreteAggregate<E> implements Aggregate<E> { List<E> list = new ArrayList<>(); @Override public void add(E obj) { // TODO Auto-generated method stub list.add(obj); } @Override public void remove(E obj) { // TODO Auto-generated method stub list.remove(obj); } @Override public Iterator<E> itrerator() { // TODO Auto-generated method stub return new ConcreteIterator<>(list); }}
8客户类
public class Client { public static void main(String[] args) { Aggregate<String> a = new ConcreteAggregate<>(); a.add("a"); a.add("b"); a.add("c"); a.add("d"); a.add("e"); Iterator<String> iterator = a.itrerator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } }}
阅读全文
0 0
- 行为模式-迭代器模式
- 设计模式-迭代器模式
- 设计模式 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 【设计模式】迭代器模式
- 设计模式-迭代器模式
- 设计模式- 迭代器模式
- 设计模式 - 迭代器模式
- 设计模式:迭代器模式
- 行为模式-迭代器模式
- 设计模式 - 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 设计模式---迭代器模式
- 设计模式---迭代器模式
- 【设计模式】迭代器模式
- 设计模式 迭代器模式
- 2017年10月30日,我的第一篇文章
- R2: 已解释和未解释的方差
- Tornado官方文档(一)【快速开始】
- 35.Oracle杂记——Oracle常用动态视图v$SQL_PLAN
- c语言递归阶乘汉诺塔文曲星游戏词典制作文件调用整合
- 迭代器模式
- 愤怒的小鸟(十分版)
- Redis事务
- Python编码问题
- for循环
- 36.Oracle杂记——Oracle常用动态视图V$SQL_PLAN_STATISTICS
- c# Visual Studio2015不能创建项目
- Web服务器高并发的解决方案&TCP沾包问题&服务器TIME_WAIT异常
- 小程序学习心得之事件冒泡