zoukankan      html  css  js  c++  java
  • Java设计模式菜鸟系列(十一)迭代器模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39807741


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

    一、uml建模:



    二、代码实现

    /**
     * 演示样例:迭代器模式
     * 
     */
    
    interface Iterator {
    	/** 前移 */
    	public Object previous();
    
    	/** 后移 */
    	public Object next();
    
    	/** 推断是否有下一个元素 */
    	public boolean hasNext();
    }
    
    interface Collection {
    	public Iterator iterator();
    
    	/** 取得集合中的某个元素 */
    	public Object get(int i);
    
    	/** 取得集合大小 */
    	public int size();
    }
    
    /**
     * 集合
     */
    class MyCollection implements Collection {
    	private String[] strArray = { "aa", "bb", "cc", "dd" };
    
    	@Override
    	public Iterator iterator() {
    		return new MyIterator(this);
    	}
    
    	@Override
    	public Object get(int i) {
    		return strArray[i];
    	}
    
    	@Override
    	public int size() {
    		return strArray.length;
    	}
    
    }
    
    /**
     * 迭代器
     */
    class MyIterator implements Iterator {
    	private Collection collection;
    	private int pos = -1;
    
    	public MyIterator(Collection collection) {
    		this.collection = collection;
    	}
    
    	@Override
    	public Object previous() {
    		if (pos > 0) {
    			pos--;
    		}
    		return collection.get(pos);
    	}
    
    	@Override
    	public Object next() {
    		if (pos < collection.size() - 1) {
    			pos++;
    		}
    		return collection.get(pos);
    	}
    
    	@Override
    	public boolean hasNext() {
    		if (pos < collection.size() - 1) {
    			return true;
    		}
    		return false;
    	}
    
    }
    
    /**
     * client測试类
     * 
     * @author Leo
     */
    public class Test {
    	public static void main(String[] args) {
    		/**
    		 * 实例化容器
    		 */
    		Collection collection = new MyCollection();
    		/**
    		 * 创建迭代器
    		 */
    		Iterator iterator = collection.iterator();
    		/**
    		 * 遍历集合中的元素
    		 */
    		while (iterator.hasNext()) {
    			System.out.println(iterator.next());
    		}
    	}
    }

    三、应用场景

    遍历、訪问集合中的某个元素等


    四、总结

    迭代器模式就是顺序訪问集合中的对象,这句话包括两层意思:一是须要遍历的对象。即集合对象。二是迭代器对象,用于对集合对象进行遍历訪问。


  • 相关阅读:
    java基础之final
    java基础之finally(转)
    java 中 == 与 equals 的区别
    转载:日志分析
    eclipse配置Git
    Gitlab使用笔记:新建工程
    hadoop,spark的启动及DataNode无法启动的解决方法
    HTTP Status 500
    springmvc4.0配置ajax请求json格式数据
    jq load()方法中加载文件中元素事件绑定失效的问题
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6806673.html
Copyright © 2011-2022 走看看