首页 > 其他分享 >迭代器模式

迭代器模式

时间:2023-06-25 16:01:51浏览次数:34  
标签:return Name Iterator 模式 public 迭代

迭代器模式

这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。

迭代器模式属于行为型模式

思考问题:如何实现顺序访问且不知道集合底层表示?

例子:

  • 迭代接口
package org.kouhao.design.patterns.迭代模式;

/**
 * @author admin
 */
public interface Iterator<E> {
    /**
     * 是否具有下一个数据
     *
     * @return 是否
     */
    boolean hasNext();

    /**
     * 获取下一个数据
     *
     * @return 数据
     */
    E next();
}

  • 容器接口
package org.kouhao.design.patterns.迭代模式;

/**
 * @author admin
 */
public interface IContainer<E> {
    Iterator<E> iterator();
}
  • 具体容器实现类
package org.kouhao.design.patterns.迭代模式;

/**
 * @author admin
 */
public class NameRepository implements IContainer<String> {
    public String[] names = {"Robert", "John", "Julie", "Lora"};

    @Override
    public Iterator<String> iterator() {
        return new NameIterator();
    }

    private class NameIterator implements Iterator<String> {
        int index;

        @Override
        public boolean hasNext() {
            return index < names.length;
        }

        @Override
        public String next() {
            if (this.hasNext()) {
                return names[index++];
            }
            return null;
        }
    }
}
  • 客户端
package org.kouhao.design.patterns.迭代模式;

public class Client {
    public static void main(String[] args) {
        NameRepository namesRepository = new NameRepository();

        for (Iterator<String> iter = namesRepository.iterator(); iter.hasNext(); ) {
            String name = iter.next();
            System.out.println("Name : " + name);
        }
    }
}

  • 输出

Name : Robert
Name : John
Name : Julie
Name : Lora

标签:return,Name,Iterator,模式,public,迭代
From: https://www.cnblogs.com/kouhao/p/17503136.html

相关文章

  • 建造者模式
    建造者模式建造者模式(BuilderPattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。解决问题:当一个类的构造函数超过4个,而且某些参数是可选的,我们通常有两个方法来构建他的对象。publicclassCompute......
  • 模板模式
    模板模式在模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。适用场景:一些固定化流程,比如JdbcTemplate.思考问题:为什么用抽象类而不用接口呢?......
  • 责任链模式
    责任链模式责任链模式(ChainofResponsibilityPattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。使用登录例子:成员定义packageorg.kouhao.design.patterns.责任链模式;/***@auth......
  • VMware中切换命令行和桌面模式
    在虚拟机中,一般通过以下步骤来切换命令行和桌面模式:进入虚拟机中的操作系统。按下Ctrl+Alt+F1键,在虚拟机中切换到命令行模式。输入用户名和密码,登录到命令行模式下的操作系统。在命令行中执行需要的操作,例如安装软件、配置网络等。当需要返回到桌面模式时,可以按下Ctrl+Alt+F......
  • WPF入门教程系列二十九 ——DataGrid使用示例MVVM模式(7)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一) 接上文WPF......
  • 委托及观察者模式
    委托委托(delegate)是一种特殊的类型(class),它可以被认为是一个可以拥有函数引用的类,它的声明规定了它能够持有的函数引用的函数形式,同时它可以存储多个函数引用,并通过自己的方法调用所有注册在它身上的方法(发布者)。理解了观察者模式就理解了委托它的特点在于:委托类型的定义方......
  • vue项目本地启动history路由模式刷新页面404
    背景:之前一直用hash模式,改成history模式后刷新页面404解决:vue.config.js中publicPath:"/"如果是线上服务则还需要后端修改一些配置,见链接点击查看......
  • 大端模式与小端模式简介
    转载文章:《数据在内存中存储的方式:大端模式与小端模式》什么是大端模式,什么是小端模式?所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低......
  • JavaScript中最好的明暗模式主题切换
    了解如何使用JavaScript、CSS自定义属性、本地存储和系统设置为您的网站构建终极主题Toggle™️。无需框架!我曾经不同意浅色和深色模式切换。“切换开关是用户系统偏好设置!”我会天真地感叹,选择让prefers-color-schemeCSS媒体查询控制我个人网站上的主题。没有切换。没有选择......
  • Ubuntu开机默认进入命令行模式/用户图形界面(转)
    一、开机默认进入命令行模式  #输入命令: sudosystemctlset-defaultmulti-user.target #重启: reboot 要进入图形界面,只需要输入命令startx从图形界面切换回命令行:ctrl+alt+F7 二、开机默认进入图形用户界面  #输入命令: ......