(五)设计模式之迭代器模式(Iterator)

本文深入探讨了迭代器设计模式的实现与应用,通过详细解释其接口与类图,提供了具体的代码示例,展示了如何在容器上进行遍历而无需关注容器内部结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

参考图书:软件设计模式与体系结构

参考博客:https://www.cnblogs.com/wanson/articles/9277813.html

 


正题:

        迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式,可在容器(container,例如链表阵列)上遍访的接口,设计人员无需关心容器的内容。

代码示例:

1MyIterator(interface)
2MyConcreteIterator(class   implements MyIterator)
3MyList(interface)
4MyConcreteList(class implements  MyList)

具体UML类图如下:

 

具体代码:

MyIterator

package cn.gxm.mode;

public interface MyIterator {

	public boolean hasNext();
	public Object next();
}

MyConcreteIterator

package cn.gxm.mode;


public class MyConcreteIterator implements MyIterator {
	
	private MyList list;
	private int index;
	public MyConcreteIterator(MyList list) {
		this.list = list;
	}

	@Override
	public boolean hasNext() {
		if(index < list.getSize()) {
			return true;
		}
		return false;
	}

	@Override
	public Object next() {
		return list.get(index++);
	}

}

MyList

package cn.gxm.mode;

public interface MyList {
	
	public int getSize();
	public Object get(int index);
	public void add(Object object);
	public MyIterator iterateor();
}

myConcreteList

package cn.gxm.mode;

public class myConcreteList implements MyList {

	private Object data[] = new Object[100];
	private int index;
	private int size;
	
	@Override
	public int getSize() {
		return size;
	}

	@Override
	public Object get(int index) {
		return data[index];
	}

	@Override
	public void add(Object object) {
		data[index++] = object;
		size++;
	}

	@Override
	public MyIterator iterateor() {
		return new MyConcreteIterator(this);
	}
}

 Client

package cn.gxm.mode;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.junit.Test;

public class Client {
	
	public static void main(String[] args) {
		myConcreteList myList = new myConcreteList();
		myList.add("str1");
		myList.add("str2");
		myList.add("str3");
		MyIterator myIterator = myList.iterateor();
		while(myIterator.hasNext()) {
			System.out.println(myIterator.next());
		}
	}

}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值