JAVA设计模式之【迭代器模式】

简介:
迭代器模式    聚合类,聚合对象    电视机遥控器,迭代器,遍历局和对象中的成员    灵活新增遍历方法    将负责遍历数据的方法提取出来,封装到专门的类中,实现数据存储和数据遍历分离。这就是迭代器模式。    灵活性,可扩展性,避免类职责过多    角色        抽象迭代器Iterator            定义访问和遍历数据的接口        具体迭代器ConcreteIterator            实现接口,完成对聚合对象的遍历            通过游标来记录当前位置        抽象聚合类Aggregate            用于存储和管理元素对象,有一个createIterator方法,用于创造迭代器        具体聚合类ConcreteAggregate            实现createIterator方法

看例子,电视遥控器遍历数据

1.迭代器接口,抽象迭代器

package Iterator;

/**
 * Created by Jiqing on 2016/10/27.
 */
public interface Television {
    TVIterator createIterator();
}

2.电视接口,抽象聚合类

package Iterator;

/**
 * Created by Jiqing on 2016/10/27.
 */
public interface Television {
    TVIterator createIterator();
}

3.具体聚合类和迭代器类

package Iterator;

/**
 * Created by Jiqing on 2016/10/27.
 */
public class TCLTelevision implements Television{
    private Object[] obj = {"湖南卫视","北京卫视","上海卫视"};
    public TVIterator createIterator() {
        return new TCLIterator();
    }

    class TCLIterator implements TVIterator {
        private int currentIndex = 0;
        public void next() {
            if (currentIndex < obj.length) {
                currentIndex ++ ;
            }
        }

        public void previous()
        {
            if(currentIndex>0)
            {
                currentIndex--;
            }
        }

        public void setChannel(int i)
        {
            currentIndex=i;
        }


        public Object currentChannel()
        {
            return obj[currentIndex];
        }

        public boolean isLast()
        {
            return currentIndex==obj.length;
        }

        public boolean isFirst()
        {
            return currentIndex==0;
        }
    }
}

4.客户端

package Iterator;

/**
 * Created by Jiqing on 2016/10/27.
 */
public class Client {
    public static void display(Television tv) {
        TVIterator i = tv.createIterator();
        System.out.println("电视机频道:");
        while (!i.isLast()) {
            System.out.println(i.currentChannel().toString());
            i.next();
        }
    }

    public static void reverseDisplay(Television tv) {
        TVIterator i = tv.createIterator();
        i.setChannel(3);
        System.out.println("逆向遍历电视机频道:");
        while(!i.isFirst())
        {
            i.previous();
            System.out.println(i.currentChannel().toString());
        }
    }

    public static void main(String a[])
    {
        Television tv;
        tv= new TCLTelevision();
        display(tv);
        System.out.println("--------------------------");
        reverseDisplay(tv);
    }
}

执行结果:

电视机频道:
湖南卫视
北京卫视
上海卫视
--------------------------
逆向遍历电视机频道:
上海卫视
北京卫视
湖南卫视

422101-20161027004421906-1830286910.png


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6002502.html,如需转载请自行联系原作者

相关文章
|
12月前
|
设计模式 C++ 容器
设计模式之迭代器模式(C++)
设计模式之迭代器模式(C++)
|
19天前
|
设计模式 安全 Java
Java设计模式-迭代器模式(21)
Java设计模式-迭代器模式(21)
|
4月前
|
设计模式 Java
Java设计模式之迭代器模式详解
Java设计模式之迭代器模式详解
|
设计模式
设计模式——迭代器模式
设计模式——迭代器模式
153 36
|
5月前
|
设计模式 Java 数据挖掘
聊聊Java设计模式-迭代器模式
迭代器(Iterator)模式,也叫做游标(Cursor)模式。我们知道,在Java 容器中,为了提高容器遍历的方便性,我们利用迭代器把遍历逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合容器的内部结构。
57 0
聊聊Java设计模式-迭代器模式
|
5月前
|
设计模式 前端开发 索引
【设计模式】之迭代器模式
迭代器模式是一种非常有用的设计模式,在前端开发中可以帮助我们更好地管理和操作数据集合。它通过封装集合对象的内部结构,并提供统一的遍历方式,使得代码更加简洁、可维护和可扩展。然而,在使用迭代器模式时需要权衡其优缺点,并根据具体情况进行选择。
61 0
|
设计模式 Java
循序渐进:解析Java设计模式中的迭代器模式
在软件开发领域,设计模式是一组经过验证的最佳实践方法,用于解决各种常见问题。迭代器模式是一种行为型设计模式,其目标是提供一种统一的方式来访问聚合对象中的各个元素,而无需暴露底层的数据结构。在本文中,我们将深入了解迭代器模式的核心思想、应用场景以及它在Java中的实际运用。
84 0
|
设计模式 存储 Java
设计模式之迭代器模式
设计模式之迭代器模式
131 0
|
设计模式 存储 Java
Java设计模式解析:迭代器模式的实现与应用
Java设计模式解析:迭代器模式的实现与应用
|
设计模式 消息中间件 存储
一起来学设计模式之迭代器模式
前言 目前正在出一个设计模式专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~ 本节给大家讲一下设计模式中的迭代器模式,并结合实际业务场景给大家讲解如何使用~ 本专题的所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整吧~ 迭代器模式 迭代器模式是一种设计模式,它允许客户端逐个访问一个聚合对象中的元素,而不必了解该对象的内部结构。它将聚合对象和访问元素的方式分离开来,使得聚合对象的内部结构可以自由地改变,而不会影响客户端的访问方式。该模式提供了一种标准的方法来遍历一个聚合对象,而不需要了解该聚合对象的实现细节。