using System.Collections.Generic;
public interface Iterator
public class BrowserHistory
private string[] urls = new string[10];
public void Push(string url)
public Iterator CreateIterator() {
return new ArrayIterator(this);
public class ArrayIterator: Iterator
private BrowserHistory history;
public ArrayIterator(BrowserHistory history)
return history.urls[index];
return index < history.count;
public static void Main()
var history = new BrowserHistory();
history.Push("website1");
history.Push("website2");
history.Push("website3");
var iterator = history.CreateIterator();
while(iterator.HasNext())
Console.WriteLine(iterator.Current());