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

简介:

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

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

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

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

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

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

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

 类图:

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

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

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

        一、迭代器(Iterator):

 

 
 
  1. //迭代器(Iterator) 
  2. abstract class Iterator 
  3.     public abstract News First(); 
  4.     public abstract News Next(); 
  5.     public abstract bool IsOver(); 
  6.     public abstract News Current(); 

        二、具体迭代器(ConcreteIterator):

 

 
 
  1. //具体迭代器(ConcreteIterator) 
  2. class ConcreteIterator:Iterator 
  3.     public ConcreteCollect concretecollect; 
  4.  
  5.     int current = 0; 
  6.  
  7.     public ConcreteIterator(ConcreteCollect collect) 
  8.     { 
  9.         concretecollect = collect; 
  10.     } 
  11.  
  12.     public override News First() 
  13.     { 
  14.         return concretecollect[1]; 
  15.     } 
  16.  
  17.     public override News Next() 
  18.     { 
  19.         current++; 
  20.         return current >= concretecollect.Count ? null : concretecollect[current]; 
  21.     } 
  22.  
  23.     public override bool IsOver() 
  24.     { 
  25.         return current >= concretecollect.Count ? true : false
  26.     } 
  27.  
  28.     public override News Current() 
  29.     { 
  30.         return concretecollect[current]; 
  31.     } 

        三、聚合(Aggregate):

 

 
 
  1. //聚合(Aggregate) 
  2. abstract class Collect 
  3.     public abstract Iterator CreateIterator(); 

        四、具体聚合(ConcreteAggregate):

 

 
 
  1. //具体聚合(ConcreteAggregate) 
  2. class ConcreteCollect : Collect 
  3.     private List<News> collectList = new List<News>(); 
  4.  
  5.     public override Iterator CreateIterator() 
  6.     { 
  7.         return new ConcreteIterator(this); 
  8.     } 
  9.     public News this[int index
  10.     { 
  11.         get { return collectList[index]; } 
  12.         set { collectList.Insert(index,value); } 
  13.     } 
  14.  
  15.     public int Count { get { return collectList.Count; } } 

        五、客户端(Client):

 

 
 
  1. class Program 
  2.     static void Main(string[] args) 
  3.     { 
  4.         ConcreteCollect collect = new ConcreteCollect(); 
  5.         collect[0] = new News("今天的第一个新闻"); 
  6.         collect[1] = new News("今天的第二个新闻"); 
  7.         collect[2] = new News("今天的第三个新闻"); 
  8.         collect[3] = new News("今天的第四个新闻"); 
  9.         collect[4] = new News("今天的第五个新闻"); 
  10.  
  11.         Iterator iterator = new ConcreteIterator(collect); 
  12.         while (!iterator.IsOver()) 
  13.         { 
  14.             Console.WriteLine("这是:" + iterator.Current().Name); 
  15.             iterator.Next(); 
  16.         } 
  17.         Console.ReadLine(); 
  18.     } 

          元素:

 

 
 
  1. class News 
  2.     public News(string name
  3.     { 
  4.         this.Name = name
  5.     } 
  6.     public string Name{get;set;} 

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



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/827026

目录
打赏
0
0
0
0
344
分享
相关文章
设计模式14 - 迭代器模式【Iterator Pattern】
设计模式14 - 迭代器模式【Iterator Pattern】
38 0
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
107 1
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
认真学习设计模式之迭代器模式(Iterator Pattern)
认真学习设计模式之迭代器模式(Iterator Pattern)
74 1
认真学习设计模式之访问者模式(Visitor Pattern)
认真学习设计模式之访问者模式(Visitor Pattern)
100 0
设计模式18 - 访问者模式【Visitor Pattern】
设计模式18 - 访问者模式【Visitor Pattern】
49 0
设计模式~迭代器模式(Iterator)-20
迭代器模式(Iterator Pattern)是Java和.Net编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。迭代器模式已经被淘汰,java中已经把迭代器运用到各个聚集类(collection)中了,使用java自带的迭代器就已经满足我们的需求了 目录 迭代器模式(Iterator) (1)优点 (2)缺点 (3)使用场景 (4)注意事项 (5)应用实例: 代码
64 0
从零开始学设计模式(二十):迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)主要是提供了一种访问一个容器对象中各个元素的方法,并且不会暴露该对象的内部细节。迭代器模式是一种对象行为型模式。
150 0
从零开始学设计模式(二十):迭代器模式(Iterator Pattern)
【愚公系列】2021年12月 二十三种设计模式(十六)-迭代器模式(Iterator Pattern)
【愚公系列】2021年12月 二十三种设计模式(十六)-迭代器模式(Iterator Pattern)
134 0
【愚公系列】2021年12月 二十三种设计模式(十六)-迭代器模式(Iterator Pattern)
C#设计模式之十五迭代器模式(Iterator Pattern)【行为型】
原文:C#设计模式之十五迭代器模式(Iterator Pattern)【行为型】 一、引言   今天我们开始讲“行为型”设计模式的第三个模式,该模式是【迭代器模式】,英文名称是:Iterator Pattern。
1053 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等