极速理解设计模式系列:16.迭代器模式(Iterator Pattern)

简介:

五个角色:迭代器(Iterator)、具体迭代器(ConcreteIterator)、聚合(Aggregate)、具体聚合(ConcreteAggregate)、客户端(Client) 

        迭代器(Iterator):定义遍历和访问元素的接口

        具体迭代器(ConcreteIterator):实现迭代器接口并且跟踪聚合对象当前位置

        聚合(Aggregate):定义一个迭代器对象接口

        具体聚合(ConcreteAggregate):实现迭代器对象,并且返回具体迭代器实例

        客户端(Client):调用迭代器对聚合对象进行遍历

实现思路:向具体聚合对象添加元素,然后调用迭代器遍历聚合对象

 类图:

 

应用场景:需要遍历新闻名称。

分析:首先建立一个聚合对象,然后在聚合对象中添加新闻的List,编写迭代器对新闻进行遍历即可。

        下面我们在控制台程序去演示一下如何使用Iterator Pattern:

        一、迭代器(Iterator):

复制代码
    //迭代器(Iterator)
abstract class Iterator
{
public abstract News First();
public abstract News Next();
public abstract bool IsOver();
public abstract News Current();
}
复制代码

        二、具体迭代器(ConcreteIterator):

复制代码
    //具体迭代器(ConcreteIterator)
class ConcreteIterator:Iterator
{
public ConcreteCollect concretecollect;

int current = 0;

public ConcreteIterator(ConcreteCollect collect)
{
concretecollect = collect;
}

public override News First()
{
return concretecollect[1];
}

public override News Next()
{
current++;
return current >= concretecollect.Count ? null : concretecollect[current];
}

public override bool IsOver()
{
return current >= concretecollect.Count ? true : false;
}

public override News Current()
{
return concretecollect[current];
}
}
复制代码

        三、聚合(Aggregate):

    //聚合(Aggregate)
abstract class Collect
{
public abstract Iterator CreateIterator();
}

        四、具体聚合(ConcreteAggregate):

复制代码
    //具体聚合(ConcreteAggregate)
class ConcreteCollect : Collect
{
private List<News> collectList = new List<News>();

public override Iterator CreateIterator()
{
return new ConcreteIterator(this);
}
public News this[int index]
{
get { return collectList[index]; }
set { collectList.Insert(index,value); }
}

public int Count { get { return collectList.Count; } }
}
复制代码

        五、客户端(Client):

复制代码
    class Program
{
static void Main(string[] args)
{
ConcreteCollect collect = new ConcreteCollect();
collect[0] = new News("今天的第一个新闻");
collect[1] = new News("今天的第二个新闻");
collect[2] = new News("今天的第三个新闻");
collect[3] = new News("今天的第四个新闻");
collect[4] = new News("今天的第五个新闻");

Iterator iterator = new ConcreteIterator(collect);
while (!iterator.IsOver())
{
Console.WriteLine("这是:" + iterator.Current().Name);
iterator.Next();
}
Console.ReadLine();
}
}
复制代码

          元素:

复制代码
    class News
{
public News(string name)
{
this.Name = name;
}
public string Name{get;set;}
}
复制代码

        如需源码请点击 IteratorPattern.rar 下载。



本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/10/18/2213110.html,如需转载请自行联系原作者


相关文章
|
2月前
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
45 2
|
2月前
|
设计模式 Java Kotlin
Kotlin - 改良设计模式 - 迭代器模式
Kotlin - 改良设计模式 - 迭代器模式
31 0
|
3月前
|
设计模式 Java 开发者
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。对于快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文重点介绍迭代器模式,通过具体示例展示了如何在Kotlin中实现迭代器模式,包括使用Iterator、Iterable接口及重载iterator运算符的方法。
37 4
|
3月前
|
设计模式 Java Kotlin
Kotlin学习笔记 - 改良设计模式 - 迭代器模式
Kotlin学习笔记 - 改良设计模式 - 迭代器模式
37 2
|
3月前
|
设计模式 Java 开发者
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
本教程详细讲解了Kotlin中的迭代器模式,包括如何通过实现Iterator和Iterable接口以及重载iterator运算符来实现可遍历的自定义集合。示例展示了如何创建一个图书集类,并通过不同方式使其支持遍历操作,适合希望深入了解Kotlin迭代器模式的开发者。
35 3
|
3月前
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
39 1
|
2月前
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
35 0
|
3月前
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
30 1
|
4月前
|
设计模式
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
4月前
|
设计模式 安全 Java
Java设计模式-迭代器模式(21)
Java设计模式-迭代器模式(21)