• 迭代器模式


    迭代器模式定义:
    Provide a way to access the elements of an aggregate object sequentially without exposing
    its underlying representation.
    它提供了一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节。
    迭代器为容器服务,能容纳对象的所有类型都可以称为容器

    迭代器模式角色:
    1.Iterator抽象迭代器
    抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素;
    next()访问下一个元素;idDone()是否已经访问到底部(Java里叫做hasNext()方法)
    2.ConcreteIterator具体迭代器
    具体迭代器角色要实现迭代器接口,完成容器元素的遍历
    3.Aggregate抽象容器
    容器角色负责提供创建具体迭代器角色的接口,必然提供一个类似createIterator()这样的方法,在Java
    中一般是iterator()方法
    4.Concrete Aggregate具体容器
    具体容器实现容器接口定义的方法,创建出容纳迭代器的对象

    //抽象迭代器
    public interface Iterator{
        public Object next();
        public boolean hasNext();
        public boolean remove();
    }
    //具体迭代器
    public class ConcreteIterator implements Iterator{
        private Vector vector=new Vector();
        public int cursor=0;
        @SuppressWarnings(unchecked)
        public ConcreteIterator(Vector _vector){
            this.vector=_vector;
        }
        //判断是否到达尾部
        public boolean hasNext(){
            if(this.cursor==this.vector.size()){
                return false;
            }else{
                return true;
            }
        }
        
        //判断是否到达尾部
        public boolean hasNext(){
            if(this.cursor==this.vector.size()){
                return false;
            }else{
                return true;
            }
        }
        
        //返回下一个元素
        public Object next(){
            Object result=null;
            if(this.hasNext()){
                result=this.vector.get(this.cursor++);
            }else{
                result=null;
            }
            return result;
        }
        //删除当前元素
        public boolean remove(){
            this.vector=.remove(this.vector);
            return true;
        }
    }
    
    //抽象容器
    public interface Aggregate{
        public void add(Object object);
        public void remove(Object object);
        public Iterator iterator();
    }
    //具体容器
    public class ConcreteAggrate implements Aggragate{
        private Vector vector=new Vector();
        public void add(Object object){
            this.vector.add(object);
        }
        public Iterator iterator(){
            return new ConcreteIterator(this.vector);
        }
        public void remove(Object object){
            this.remove(object);
        }
    }
    //场景类
    public class Client{
        public static void main(String[] args){
            Aggregate agg=new ConcreteAggregrate();
            agg.add("abc");
            agg.add("defc");
            agg.add("qqqq");
            Iterator iterator=agg.iteragor();
            while(iterator.hasNext()){
                System.out.println(iterator.next());
            }
        }
    }
  • 相关阅读:
    跟我学android—01.SplashActivity
    eclipse android : A project with that name already exists in the workspace
    冬吴相对论锦言佳句--0005.薄伽梵歌与“印度式管理”
    [转载]Jquery Form插件表单参数
    Form表单学习网站
    [转载]JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
    jquery捕捉文本域输入事件
    [转载]js 遍历数组对象
    C#跳出循环的几种方法的区别
    [转载]MVC3缓存:使用页面缓存
  • 原文地址:https://www.cnblogs.com/liaojie970/p/5489512.html
Copyright © 2020-2023  润新知