博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式--迭代器模式(Iterator)
阅读量:4198 次
发布时间:2019-05-26

本文共 2123 字,大约阅读时间需要 7 分钟。

迭代器模式
概述
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
适用性
1.访问一个聚合对象的内容而无需暴露它的内部表示。    2.支持对聚合对象的多种遍历。    3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代)。
参与者
1.Iterator      迭代器定义访问和遍历元素的接口。    2.ConcreteIterator      具体迭代器实现迭代器接口。      对该聚合遍历时跟踪当前位置。    3.Aggregate      聚合定义创建相应迭代器对象的接口。    4.ConcreteAggregate      具体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例.
Examplepublic interface Iterator {    Object next();        void first();        void last();        boolean hasNext();}ConcreteIterator public class IteratorImpl implements Iterator {    private List list;        private int index;        public IteratorImpl(List list) {        index = 0;        this.list = list;    }        public void first() {        index = 0;    }    public void last() {        index = list.getSize();    }    public Object next() {        Object obj = list.get(index);        index++;        return obj;    }    public boolean hasNext() {        return index < list.getSize();    }}Aggregate public interface List {    Iterator iterator();        Object get(int index);        int getSize();        void add(Object obj);}ConcreteAggregate public class ListImpl implements List {    private Object[] list;        private int index;        private int size;        public ListImpl() {        index = 0;        size = 0;        list = new Object[100];    }        public Iterator iterator() {        return new IteratorImpl(this);    }        public Object get(int index) {        return list[index];    }        public int getSize() {        return this.size;    }        public void add(Object obj) {        list[index++] = obj;        size++;    }}Test public class Test {    public static void main(String[] args) {        List list = new ListImpl();        list.add("a");        list.add("b");        list.add("c");        //第一种迭代方式        Iterator it = list.iterator();        while (it.hasNext()) {            System.out.println(it.next());        }                System.out.println("=====");        //第二种迭代方式        for (int i = 0; i < list.getSize(); i++) {            System.out.println(list.get(i));        }    }}result abc=====abc

转载地址:http://ijbli.baihongyu.com/

你可能感兴趣的文章
欢迎加入【亿能测试快讯】邮件列表!
查看>>
为什么我们的自动化测试“要”这么难
查看>>
LoadRunner性能脚本开发实战训练
查看>>
测试之途,前途?钱途?图何?
查看>>
测试设计与测试项目实战训练
查看>>
HP Sprinter:敏捷加速器
查看>>
IDC 的调查发现开发人员的37%的时间花在解决BUG上
查看>>
单元测试培训PPT
查看>>
国外的性能研讨会WOPR的资源列表
查看>>
投入自动化测试首要考虑的5个因素
查看>>
UIAutomator学习笔记V0.1
查看>>
推荐几本Web前端与Web服务器性能相关的书籍
查看>>
推荐两本Squid性能测试与优化相关的书
查看>>
ALM11的REST API
查看>>
接口自动化测试平台架构图
查看>>
2013年度第一期测试沙龙 PPT下载
查看>>
TestComplete9.2增强支持 Embarcadero RAD Studio XE3、Ext JS
查看>>
8月白盒测试课程 - C C++ 白盒测试实践
查看>>
自动化测试调查问卷送《QTP自动化测试最佳实践》
查看>>
monkey常用命令及其用法
查看>>