Java23种设计模式——20.行为型模式之迭代器模式

Java中除去有设计原则之外,还有23中设计模式。

这些模式都是前辈们一点一点积累下来,一直在改进,一直在优化的,而这些设计模式可以解决一些特定的问题。

并且在这些模式中,可以说是将语言的使用体现的淋漓尽致。

那我们今天要学习  行为型模式  中的  迭代器模式  !

迭代器模式

先来百科一下,什么是迭代器模式

这个其实和我们在遍历 List、Set集合时候使用的迭代器类似,我们在不暴露对象的内部,就可以遍历该集合

迭代器模式的定义与特点

迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式,其主要优点如下。

1. 访问一个聚合对象的内容而无须暴露它的内部表示。

2. 遍历任务交由迭代器完成,这简化了聚合类。

3. 它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。

4. 增加新的聚合类和迭代器类都很方便,无须修改原有代码。

5. 封装性良好,为遍历不同的聚合结构提供一个统一的接口。

其主要缺点是:增加了类的个数,这在一定程度上增加了系统的复杂性。

迭代器模式的结构与实现

这种模式呢,是通过将聚合对象的遍历行为分离出来,抽象成迭代器类来实现的,其目的是在不暴露聚合对象的内部结构的情况下,让外部代码透明地访问聚合的内部数据。

先来看看有那些角色

1. 抽象聚合角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口。

2. 具体聚合角色:实现抽象聚合类,返回一个具体迭代器的实例。

3. 抽象迭代器角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、first()、next() 等方法。

4. 具体迭代器角色:实现抽象迭代器接口中所定义的方法,完成对聚合对象的遍历,记录遍历的当前位置。

知道了这些之后,我们自己来模拟Java中的迭代器,自己去实现一个

第一步:

我们先定义抽象的聚合角色,也就是一个底层的一个对象

当然啊,这里我们没有这个东西,我们先让他报错着,不要管他

第二步:

我们来弄一个具体的实现类,实现一下刚刚的接口

但是报错的地方我们先不管

第三步:

我们去弄一个 IteratorForMe 的接口

可以看到啊,报错瞬间都OK了,然后我们给这个接口定义一些方法

第四步:

我们将上面这个接口进行实现

首先,我们再实例化这个类的时候,就要将这个我们要遍历的集合给他传过去,所以,我们需要一个构造方法来接受这个集合

有了这个之后,我们开始写里面的具体的实现方法

第五步:

这里我们再去将 ListAggregate 的 getIterator 方法补全

测试:

接下来我们弄个测试类,我们测试一下这个迭代器

现在来运行一下

OK,就到这里,大家好好看一下。多多练习。有问题可以联系我QQ:2100363119

欢迎大家访问我的个人网站:lemon1234.com 感谢大家留言

猜你喜欢

转载自blog.csdn.net/weixin_45908370/article/details/109667614