Aha!设计模式(86)-迭代器模式(2)

网友投稿 510 2022-10-12

Aha!设计模式(86)-迭代器模式(2)

Aha!设计模式(86)-迭代器模式(2)

适用性

为访问不同构成的聚合对象提供统一的方法。

支持以统一的方法实现不同形式的遍历。

归纳成一句话,就是使用迭代器模式可以以一种方式对不同构成的对象实现不同种类的遍历。

结构

参与者

• Iterator(抽象迭代器类) — 抽象迭代器定义取得和遍历元素所需要的接口。类图中定义的接口只是一个示例。在实际的应用中,也可以有其他选择。例如可以让next方法除了移动当前位置之外还可以返回子元素,这样就可以省去IsDone接口。

• ConcreteIterator(具象迭代器类)

— 具象迭代器实现迭代器接口。在具体实现迭代器接口的时候,可能需要直接访问聚合类的数据,也可能是通过其他访问该聚合类的迭代器间接访问聚合类对象。

• Aggregate(聚合类)

— 聚合定义创建相应迭代器对象的接口。这个接口的用法,相当于工厂方法模式。也就是说这个聚合类还应该具有其他的功能。

• ConcreteAggregate(具象聚合类) — 具象聚合类实现创建相应迭代器的接口,该操作返回ConcreteIterator的具体实例。

很多时候,抽象聚合类和具象聚合类之间会产生这种继承关系,并不是因为需要这种生成迭代器动作的抽象,而是由于这两个类本身的功能需求。生成迭代器只是软件开发上的需求,并不是类的本质特征。也有很多情况根本就不需要这种继承关系。

协作

• ConcreteIterator取得聚合中的当前子元素,并能够找到出待遍历的后继对象。

觉得本文有帮助?请分享给更多人。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Neo 最小和快速Go Web框架拥有极其简单的API(neo4j)
下一篇:Unity制作类似io小游戏、区块链游戏的新框架(Unity开发的游戏)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~