zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    redis增加移除节点
    MYSQL管理工具phpMyAdmin安装,nginx动态页面转php-fpm端口
    配置PHP支持MYSQL
    后台运行linux命令,杀死僵尸进程
    linux教程,shell教程,nginx,mysql安装教程
    KMS服务器的搭建
    docker基本操作,Dockerfile , 自定义仓库
    IntelliJ IDEA中Java的Getter/Setter方法的自动生成
    Java定义一个标准的类
    Java构造方法
  • 原文地址:https://www.cnblogs.com/TonyYPZhang/p/5515812.html
Copyright © 2011-2022 走看看