• 注册
当前位置:1313e > 默认分类 >正文

迭代器模式学习总结

一、概念

一个聚合对象具有两个职责,一是存储内部的数据,二是遍历内部数据。从依赖性看,前者是聚合对象的根本属性,后者则是可以变化,分离的。将聚合对象的遍历行为抽取为一个迭代器,专门提供遍历聚合对象内部数据的行为,这边是迭代器。

二、类图

这里写图片描述

三、实例之商品名称遍历

代码:

/** 抽象迭代器类*/
public interface AbstractIterator {public void next();public boolean isLast();public void previous();public boolean isFirst();public String getNextItem();public String getPreviousItem();}
//抽象商品集合:抽象聚合类
public abstract class AbstractProductList {private String []productsName;//产品名称数组public AbstractProductList(String []productsName){this.productsName=productsName;}public String[] getProductsName(){return this.productsName;}public abstract AbstractIterator getIterator();}
//具体迭代器类
public class MyIterator implements AbstractIterator{private String []productsName;private int index1;private int index2;public MyIterator(AbstractProductList list) {productsName=list.getProductsName();index1=0;index2=productsName.length-1;}@Overridepublic void next() {if(index1@Overridepublic boolean isLast() {return (index1==productsName.length);}@Overridepublic void previous() {if(index2>-1){index2--;}}@Overridepublic boolean isFirst() {return (index2==-1);}@Overridepublic String getNextItem() {return productsName[index1];}@Overridepublic String getPreviousItem() {return productsName[index2];}}
//具体商品类
public class ProductList extends AbstractProductList{public ProductList(String[] productsName) {super(productsName);}@Overridepublic AbstractIterator getIterator() {return new MyIterator(this);}}
/*
客户端*/
public class Client {public static void main(String[] args) {String []productNames={"ThinkPad 电脑","Tissot 手表","iPhone 手机","LV 手包"};AbstractIterator iterator;AbstractProductList productList;productList=new ProductList(productNames);iterator=productList.getIterator();//获得它对应的迭代类while(!iterator.isLast()){//利用迭代器类进行迭代System.out.println(iterator.getNextItem());iterator.next();}System.out.println("---------------------------------");while(!iterator.isFirst()){System.out.println(iterator.getPreviousItem());iterator.previous();}}}

四、总结

使用时机:
需要访问一个聚合对象内部内容而不需要暴露它的内部表示,或为聚合对象提供多种迭代方式,以及为遍历不同的聚合结构提供一个统一的接口时。

We use our time to get rid of others’ expectations and find ourselves.

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录