迭代器 在各种语言中 都有封装好的迭代器集合 比如c# list
迭代器图
举例子
电视和遥控器 电视如果没有遥控器 需要去电视控制面板 一个一个的换台 有遥控器就可以 在遥控器里直接按键 用来很方便 很解耦
Iterator
一个实体类 集合需要的对象
俩个接口
一个是集合对象接口 包含创建操作集合方法接口对象方法 和返回集合对象方法
一个是操作集合方法接口
public class Item
{
private string Name;
public Item(string _name)
{
this.Name = _name;
}
public string getName()
{
return Name;
}
}
public interface TV
{
ArrayList contriner();
Iterator CreateIterator();
}
public interface Iterator
{
Item first();
Item next();
bool isDone();
Item CurrentItem();
}
class HrTV:TV
{
private ArrayList list;
public HrTV()
{
list = new ArrayList();
list.Add(new Item("山东卫视"));
list.Add(new Item("湖南卫视"));
list.Add(new Item("浙江卫视"));
list.Add(new Item("大连卫视"));
list.Add(new Item("山西卫视"));
}
public System.Collections.ArrayList contriner()
{
return list;
}
public Iterator CreateIterator()
{
return new Controller(list);
}
}
public class Controller:Iterator
{
private int index = 0;
private ArrayList list;
public Controller( ArrayList l )
{
list = l;
}
public Item first()
{
index = 0;
return (Item)list[index];
}
public Item next()
{
index ++;
return (Item)list[index];
}
public bool isDone()
{
return index >= list.Count - 1;
}
public Item CurrentItem()
{
return (Item)list[index];
}
}
static void Main(string[] args)
{
TV tv = new HrTV();
Iterator i = tv.CreateIterator();
Console.WriteLine(i.first().getName());
while (!i.isDone())
{
Console.WriteLine(i.next().getName());
}
Console.ReadKey();
}
C# 使用自带迭代器
IEnumerable
记住这个思想 不要总想着怎么用代码实现它
明天看一下C#具体怎么使用迭代器 早睡记忆力好 晚安~