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

    迭代器模式

    定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。

    如果我们需要遍历一个聚合对象中的各个元素,通常的做法是把遍历方法写在对象这个类里,这样做如果要更改遍历方法需要修改这个对象类,违背了“开闭原则”。迭代器模式能较好的克服这个缺点。

    使用场景:需要遍历一个聚合对象

    就像JDK的Iterable接口一样,集合实现了来进行遍历。
    正是因为有了这个模式,所以我们集合才能有foreach来遍历,因为foreach的底层就是itreable。

    代码示例:

    public interface Aggregate {
    
        Iterator getIterator();
    }
    
    public class ConcreteAggregate implements Aggregate {
    
    
        private static String[] names=new String[]{"xiaowang","xiaoli","abc","tiantian"};
    
        @Override
        public Iterator getIterator() {
            return new ConcreteIterator(names);
        }
    
    
    }
    
    public interface Iterator {
    
        Object next();
    
        boolean hasNext();
    }
    
    public class ConcreteIterator implements Iterator {
    
        private String[] names;
    
        public ConcreteIterator(String[] names) {
            this.names = names;
        }
    
        private int index=-1;
    
        @Override
        public Object next() {
            return names[++index];
        }
    
        @Override
        public boolean hasNext() {
            if(index<names.length-1)
                return true;
            else
                return false;
        }
    }
    

    测试代码:

     public static void main(String[] args) throws InterruptedException, CloneNotSupportedException {
            Aggregate aggregate=new ConcreteAggregate();
            Iterator iterator = aggregate.getIterator();
            while (iterator.hasNext()){
                Object next = iterator.next();
                System.out.println(next);
            }
    
        }
    

    返回目录

    书山有路勤为径,学海无涯苦作舟
  • 相关阅读:
    CSS3新子代选择器
    css3新选择
    procixx和最近调试的坑
    procixx地址
    从零开始之uboot、移植uboot2017.01(二、从入口分析流程)
    从零开始之uboot、移植uboot2017.01(一、移植前的准备)
    四、移植 JZ2440 开发板
    三、编译第一步 make xxx_defconfig——Makefile.build 脚本
    二、编译第一步 make xxx_defconfig
    一、配置介绍
  • 原文地址:https://www.cnblogs.com/javammc/p/14952797.html
Copyright © 2011-2022 走看看