目录
前言
设计模式,又称为软件设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。学习设计模式可以提高程序员的思维能力、编程能力和设计能力,使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
一、🌍迭代器(Iterator)模式是什么?🌍
提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
二、🌍迭代器(Iterator)模式的优缺点🌍
优点:
1)访问一个聚合对象的内容而无需暴露它的内部表示;
2)遍历任务交由迭代器完成,这简化了聚合类;
3)它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历;
4)增加新的聚合类和迭代器类都很方便,无须修改原有代码;
5)封装性良好,为遍历不同的聚合结构提供一个统一的接口。
缺点:
1) 增加了类的个数,这在一定程度上增加了系统的复杂性。
三、🌍迭代器(Iterator)模式的结构🌍
迭代器模式主要包含以下角色:
⑴ 抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口。
⑵ 具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例。
⑶ 抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含以下方法:hasNext()、first()、next()等。
⑷ 具体迭代器(ConcreteIterator)角色:实现抽象迭代器接口中所定义的方法,完成对聚合对象的遍历,记录遍历的当前位置。
四、🌍实例演示🌍
1.🌕实例概述🌕
抽象聚合角色:
MajorAggregate类,定义生成一个迭代器的方法,得到数组数据的方法。
具体聚合角色:
MajorConcreteAggregate类,实现方法,定义数据结构类型,得到专业数据。
抽象迭代器角色:
MajorIterator类,定义了得到数组下一个元素等数组操作的方法。
具体迭代器色:
MyjorConcteteIterator类,实现方法。
2.🌕代码演示🌕
话不多说,代码附上!
package Iterator;
public class Iterator {
public static void main(String[] args) {
// 创建生成专业序列对象
MajorAggregate major = new MajorConcreteAggregate();
// 生成迭代器
MajorIterator myIterator = major.generateIterator();
// 迭代器遍历输出
output(myIterator);
}
public static void output(MajorIterator e) {
while (e.hasNext()) {
System.out.println(e.Next());
}
}
}
/// <summary>
/// 抽象聚合类、包含一个创建迭代器对象的方法
/// </summary>
abstract class MajorAggregate {
// 判断索引
protected int Length;
abstract MajorIterator generateIterator();
public int getLength() {
return Length;
}
abstract public Object getItem(int i);
}
/// <summary>
/// 抽象迭代器、包含访问和遍历元素的方法
/// </summary>
interface MajorIterator {
boolean hasNext();
Object Next();
}
/// <summary>
/// 具体迭代器、包含访问和遍历元素的方法
/// </summary>
class MyjorConcteteIterator implements MajorIterator {
private MajorAggregate list;
private int index = -1;
// 得到聚合类的数据
public MyjorConcteteIterator(MajorAggregate list) {
this.list = list;
this.index = 0;
}
@Override
// 判断有没有下一个元素
public boolean hasNext() {
// TODO Auto-generated method stub
if (index + 1 < list.Length) {
return true;
}
return false;
}
@Override
// 得到下一个元素
public Object Next() {
// TODO Auto-generated method stub
if (this.hasNext()) {
this.index++;
}
return this.list.getItem(index);
}
public MajorAggregate getList() {
return this.list;
}
}
/// <summary>
/// 具体聚合类
/// </summary>
//负责维护数据
class MajorConcreteAggregate extends MajorAggregate {
String[] list;
public MajorConcreteAggregate() {
list = new String[] { "计算接科学与技术", "软件工程", "信息工程", "应用数学" };
Length = list.length;
}
@Override
// 创建迭代器对象
public MajorIterator generateIterator() {
// TODO Auto-generated method stub
return new MyjorConcteteIterator(this);
}
@Override
// 获取指定位置元素
public Object getItem(int i) {
// TODO Auto-generated method stub
return this.list[i];
}
}
3.🌕实验结果🌕
软件工程
信息工程
应用数学
总结
以上就是今天要讲的内容,本文仅仅简单介绍了行为模式下迭代器模式的定义,优缺点以及其的模式结构,并通过实例演示,进一步反应了在一定需求条件下,迭代器模式的优点。