• [Design Pattern] Iterator Pattern 简单案例


    Iterator Pattern,即迭代时模式,按照顺序依次遍历集合内的每一个元素,而不用了解集合的底层实现,属于行为类的设计模式。为了方便理解记忆,我也会称其为遍历模式。

    下面是一个迭代器模式的简单案例。

    Iterator 定义了迭代接口, 仅 hasNext 和 next 两个方法。Container 定义了集合的接口,必须包含一个返回迭代器类 Iterator 的方法。NameRepository 是容器的具体类,实现 Container 接口,并拥有一个内部类 NameIterator ,该内部类实现了 Iterator 接口,用于遍历容器的全部元素。IteratorPatternDemo 演示迭代器模式。

    代码实现

    Iterator 接口,定义遍历的两个方法

    public interface Iterator {
    
        public boolean hasNext();
        
        public Object next();
    }

    Container 接口,定义返回迭代器 Iterator 的方法

    public interface Container {
    
        public Iterator getIterator();
    }

    NameRepository 是具体的容器内,含有一个内部类,内部类实现了 Iterator 接口,提供遍历集合元素的功能。

    public class NameRepository implements Container {
    
        private String[] names = "apple,banana,pear,orange".split(",");
        
        @Override
        public Iterator getIterator() {
            return new NameIterator();
        }
        
        private class NameIterator implements Iterator{
    
            private int index;
            
            NameIterator(){
                index = 0;
            }
            
            @Override
            public boolean hasNext() {
                return this.index < names.length;
            }
    
            @Override
            public Object next() {
                Object res = names[index];
                index++;
                return res;
            }
        }
    }

    演示代码

    public class IteratorPatternDemo {
    
        public static void main(){
            
            NameRepository nameRepository = new NameRepository();
            Iterator iter = nameRepository.getIterator();
            while(iter.hasNext()){
                System.out.println(iter.next());
            }
        }
    }

    参考资料

    Design Patterns - Iterator Pattern, TutorialsPoint

  • 相关阅读:
    mysql常用时间列表的查询——七天内、本月、本周、某天
    js取数组获取最大值的四种方式
    Mysql按周,按月,按日,按小时分组统计数据
    Mysql中的sum函数为null时的解决办法
    Maven 中 dependencyManagement 标签使用
    嵌入式printf函数运用基于ti 16位MCU
    md5实现对用户名与密码的保护
    c# md5 算法实现
    define a struct
    file.open异常处理
  • 原文地址:https://www.cnblogs.com/TonyYPZhang/p/5515812.html
Copyright © 2020-2023  润新知