17——行为型模式之迭代器模式
最后更新于:2022-04-01 20:11:04
**定义:**迭代器模式(IteratorPattern),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
类型:对象行为型模式
**概述:**
正如定义所言,迭代器是为解决更好的访问一个聚合对象中的各个元素而产生的。迭代器是对象行为模式,也即它主要是通过将对象中的访问行为提取出来作为迭代器类。迭代器的产生,主要是为了解决客户端对聚合对象内部元素访问时可能造成的耦合。
为了使得迭代器能够访问更多的聚合对象,所以需要面向接口编程,即为迭代器和聚合对象分别提供统一接口。
C++中的STL库、C#,Java的泛型类型都有封装迭代器,所以下面的示例重点了解迭代器的工作原理。
举一个简单示例,有一个图书馆,存有许多图书。一天,有读者来借书,这个时候就可以使用迭代器模式了。迭代器将一系列图书的遍历查找定位等操作抽象出来形成一个迭代器类。
类图:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-19_57b6b4672698f.jpg)
参与者:
1. Client,生成具体的NationalLibrary以及具体的ConcreteIterator对象。
1. Library,提供聚合对象的抽象接口。
1. NationalLibrary,实现接口,并返回一个ConcreteIterator的对象。
1. Iterator,迭代器接口类。
1. ConcreteIterator,完成接口实现遍历查找。
示例代码:
~~~
using System;
using System.Collections.Generic;
using System.Text;
namespace IteratorSpace
{
class Program
{
abstract class Library
{
public abstract Iterator CreateIterator();
}
class NationalLibrary : Library
{
private IList
';