zoukankan      html  css  js  c++  java
  • Iterator

    定义

      迭代子模式又叫游标(Cursor)模式,属于对象的行为模式。

      迭代子模式提供一种方法顺序访问一个聚集中的各个元素,而不必暴露聚集的内部表示。为不同的聚集对象的迭代提供了一个共同的接口。

    聚集,指的是多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。数组就是最基本的聚集。

    JAVA中的聚集对象是实现了java.util.Collection接口的对象。如: List,Set,Queue...

    为什么需要迭代子模式

      1,不同的聚集具有不同的遍历接口

      

    结构和角色

      

      抽象迭代子(Iterator)角色 : 定义遍历聚集对象所需的接口。 

      具体迭代子(ConcreteIterator)角色 : 实现Iterator接口,保持迭代过程中的游标位置。

      聚集(Aggregate)角色 : 定义创建迭代子对象的接口。createIterator()。和管理聚集元素的接口。

      具体聚集(ConcreteAggregate)角色 : 实现Aggregate接口,返回一个合适的具体迭代子实例,并管理聚集元素。

    package ds.iterator;
    
    public interface Aggregate<E> {
    
        public abstract Iterator<E> createIterator();
    
        
    }
    package ds.iterator;
    
    public class ConcreteAggregate<E> implements Aggregate<E> {
        
        @Override
        public Iterator<E> createIterator() {
            return new ConcreteIterator<E>();
        }
    
    }
    package ds.iterator;
    
    public interface Iterator<E> {
        
        public abstract boolean hasNext();
    
        public abstract E next();
    
        public abstract void remove();
        
    }
    package ds.iterator;
    
    public class ConcreteIterator<E> implements Iterator<E> {
    
        @Override
        public boolean hasNext() {
            return false;
        }
    
        @Override
        public E next() {
            return null;
        }
    
        @Override
        public void remove() {
    
        }
    
    }

      迭代子模式把遍历聚集元素的责任交给迭代子,而不是聚集对象。这不仅让聚集的接口和实现变得更简洁,也可以让聚集更专注在它所应该专注的事情上(也就是管理对象集合),而不必去理会遍历的事情。 这是单一职责原则的体现。

      由于遍历算法封装在迭代子角色里面, 因此迭代的算法可以独立于聚集角色变化。由于客户端拿到的是迭代子对象, 因此,不必知道聚集对象的类型,就可以读取和遍历聚集对象。这样即便聚集对象的类型发生变化,也不会影响到客户端的遍历过程。(这是面向接口编程的精华)

    单一职责原则 : 

      一个类应该只有一个引起变化的原因。

  • 相关阅读:
    hdu 3085
    hdu 3295 模拟过程。数据很水
    hdu 2181 水搜索
    pku ppt some problem
    2-sat
    The 2014 ACM-ICPC Asia Mudanjiang Regional First Round
    nenu contest3
    The 10th Zhejiang Provincial Collegiate Programming Contest
    最小费用最大流
    多源最短路
  • 原文地址:https://www.cnblogs.com/shouwangzhe-/p/3681656.html
Copyright © 2011-2022 走看看