设计模式之迭代器模式
来源:互联网 发布:淘宝网骆驼男鞋休闲鞋 编辑:程序博客网 时间:2024/05/18 17:45
迭代器模式也叫游标模式,提供一种方法可以访问逐一访问容器里面的每个对象,又不暴露各个对象的内部细节。
迭代器模式分为下面几个角色:
- 迭代器角色:定义访问和遍历容器内元素的接口;
- 具体迭代器:迭代器角色的具体实现,并保存迭代器中的位置;
- 聚集角色:给出创建迭代器对象的接口;
- 具体聚集角色:聚集角色的实现,并返回一个迭代器对象的实例。
迭代器角色:
public interface Iterator {public Object first();public Object next();public Object currentObject();}具体迭代器角色:
public class ConcreteIterator implements Iterator {public ConcreteAggregate soldier;public int currentItem = -1;public ConcreteIterator(ConcreteAggregate soldier) {super();this.soldier = soldier;}@Overridepublic Object first() {if(soldier.lists.size() > 0) {return soldier.lists.get(0);}return null;}@Overridepublic Object next() {if(currentItem < soldier.lists.size() - 1) {currentItem++;if(currentItem > soldier.lists.size() - 1) {currentItem = 0;}return soldier.lists.get(currentItem);}return null;}@Overridepublic Object currentObject() {return soldier.lists.get(currentItem);}}聚集角色:
public abstract class Aggregate {public abstract Iterator createIterator();}具体聚集角色:
public class ConcreteAggregate extends Aggregate {public List<String> lists = new ArrayList<String>();@Overridepublic Iterator createIterator() {return new ConcreteIterator(this);}public void addObject(String str) {lists.add(str);}}测试:
public static void main(String[] args) {ConcreteAggregate concreteAggregate = new ConcreteAggregate();concreteAggregate.addObject("1");concreteAggregate.addObject("2");concreteAggregate.addObject("3");concreteAggregate.addObject("4");concreteAggregate.addObject("5");Iterator iterator = concreteAggregate.createIterator();System.out.println(iterator.first());System.out.println("------");for(int i = 0; i < concreteAggregate.lists.size(); i++) {System.out.println(iterator.next());}System.out.println("------");System.out.println(iterator.currentObject());}
0 0
- 设计模式之迭代器模式
- 设计模式之 迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之--迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之-迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式 之 迭代器模式
- 设计模式 之 迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 《将博客搬至CSDN》
- Python Numpy的数组array和矩阵matrix
- latex最简单的中文配置
- Code Forces 652A Gabriel and Caterpillar
- 产品学习笔记7—如何与程序员高效沟通
- 设计模式之迭代器模式
- JAVA 异常类
- 泛型--Generic
- 【codevs2516】【BZOJ2461】符环,DP
- Code Forces 652C Foe Pairs
- Bzoj4443:[Scoi2015]小凸玩矩阵:网络流
- 项目中代码健壮性感言
- oracle创建数据库sql脚本
- ubuntu下搭建nfs服务器