zoukankan      html  css  js  c++  java
  • 迭代器模式

      迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

      在设计中使用迭代器模式的影响:如果你有一个统一的方法访问聚合中的每一个对象,你就可以编写多态的代码和这些聚合搭配(当我们写了一个需要以迭代器当做参数的方法时,其实就是在使用多态的迭代。也就是说,我们所写出的代码,可以在不同的集合中游走,只要这个集合支持迭代器即可(实现该接口),比如下面代码示例中的类IteratorA和IteratorB);迭代器模式把在元素之间游走的责任交给迭代器,而不是聚合对象。这不仅让聚合的接口和实现变得简洁,也可以让聚合更专注它应该专注的事情上面(也就是管理对象集合),而不必去理会遍历的事情。

      代码示例:假如有两种聚合对象 数组 和 ArrayList,现在使用迭代器模式来封装遍历要素。

      先写一个迭代器接口:

    public interface Iterator 
    {
        public boolean HasNext();
    
        public Object Next();
    }

      然后分别用各自的遍历规则实现接口Iterator。。。

    IteratorA :
    public class IteratorA implements Iterator
    {
        Object[] objects;
    
        int position;
    
        public IteratorA(Object[] objects)
        {
            this.objects = objects;
        }
    
        public Object Next()
        {
            Object object = objects[position];
            position = position + 1;
            return object;
        }
    
        public boolean HasNext()
        {
            if (position >= objects.length || objects[position] = null)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }

     IteratorB :

    public class IteratorB implements Iterator
    {
        ArrayList objects;
    
        int position;
    
        public IteratorB(ArrayList objects)
        {
            this.objects = objects;
        }
    
        public Object Next()
        {
            Object object = objects.get(position);
            position = position + 1;
            return object;
        }
    
        public boolean HasNext()
        {
            if (position >= objects.size() || objects.get(position) = null)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }

      这样通过“针对接口编程,而不针对实现编程”,就可以减少对具体类的依赖,而且还可以不暴露其内部的表示。

  • 相关阅读:
    C语言实现mq收发数据的函数
    4G通信模块在ARM平台下的应用
    4G 通信模块在ARM 平台下的应用
    修改web前端访问端口
    从零开始用 Flask 搭建一个网站(一)
    Python实现Windows定时关机
    前端和后端的数据交互(jquery ajax+python flask+mysql)
    python开源项目及示例代码
    Django读取Mysql数据并显示在前端
    C++关于string的一些用法
  • 原文地址:https://www.cnblogs.com/hachun/p/3620601.html
Copyright © 2011-2022 走看看