迭代器模式(Iterator Pattern)
创始人
2025-01-09 10:34:59
0

迭代器模式(Iterator Pattern)

定义

又称为游标模式(Cursor Pattern),它提供了一种顺序访问集合/容器对象元素的方法,而又无须暴露集合内部表示。

本质:抽离集合对象迭代行为到迭代器中,提供一致访问接口。

属于行为型模式。

适用场景

  1. 访问一个集合对象的内容而无需暴露它的内部表示
  2. 为遍历不同的集合结构提供一个统一的访问接口

标准示例

在这里插入图片描述

  • 迭代器(Iterator):定义访问和遍历元素的接口,通常包含如hasNext()(判断是否有下一个元素)、next()(返回下一个元素)等方法。
  • 具体迭代器(ConcreteIterator):实现迭代器接口,对聚合对象遍历时跟踪当前位置,并能够计算出待遍历的后继对象。
  • 聚合(Aggregate):定义创建相应迭代器对象的接口。
  • 具体聚合(ConcreteAggregate):实现创建相应迭代器的接口,返回一个具体迭代器对象。

代码:

public interface Iterator{ 	boolean hasNext(); 	E next(); } 
public class ConcreteIterator implements Iterator{ 	private List list; 	private int cursor = 0; 	public ConcreteIterator(List list){ 		this.list = list; 	}  	public boolean hasNext(){ 		return this.cursor < this.list.size(); 	} 		 	public E next(){ 		return this.list.get(this.cursor ++); 	} } 
public interface IAggregate{ 	boolean add(E element); 	boolean remove(E element); 	Iterator iterator(); } 
public class ConcreteAggregate implements IAggregate{ 	private List list = new Arraylist(); 	 	public boolean add(E element){ 		return this.list.add(element); 	} 	public boolean remove(E element){ 		return this.list.remove(element); 	} 	public Iterator iterator(){ 		return new ConcreteIterator(this.list); 	} } 
public class Test {     public static void main(String[] args) {         IAggregate aggregate = new ConcreteAggregate();         aggregate.add("java");         aggregate.add("python");         aggregate.add("javascript");          Iterator iterator = aggregate.iterator();          while(iterator.hasNext()){             String element = iterator.next();             System.out.println(element);         }     } } 

输出结果:

java python javascript 

相关内容

热门资讯

基于Hadoop的网上购物行为... 有需要本项目的可以私信博主,提供部署和讲解服务!!...
Flink-时间语义 1时间语义flink种设计时间的不同概念:1 Event Time:事件时间ÿ...
Java中的StringBui... 一、StringBuilder的使用方法1. 什么是StringBuilderStringBuild...
Spring Boot集成Sh... Spring Boot集成ShardingSphere详解随着数据量的不断增长,单一数...
踏入大数据的第一天,我先入入门 【转行原因】目前数据每天已亿计算,作为 Java程序员的我已经无法使用常规工具对数据进...
Lua 运算符 Lua 运算符Lua 是一种轻量级的编程语言,广泛用于游戏开发、脚本编写和其他应用程序...
使用Postman调用微信小程... 引言微信小程序已经成为企业连接用户的重要渠道之一。为了吸引用户进入小程序,开发者常常需...
Flink 运行时[Runti... 一、基本组件栈在Flink整个软件架构体系中,同样遵循着分层的架构设计理念࿰...
Lua协程(同步的多线程) 1.coroutine.create( func )创建一个协程,返回co࿰...
camtasia怎么剪掉不用的... 有时我们录制的屏幕内容,并不一定全部需要。那么,屏幕录制的视频怎么裁剪上...