Design_Pattern - Iterator PatternIterator pattern is a commonly used design pattern in Java and .Net programming environment. This pattern is used to get a way to access the elements of a collection object in sequential manner without any need to know its underlying representation. Iterator pattern falls under behavioral pattern category. Implementation We are going to create an Iterator interface which includes navigation method and a Container interface which returns the iterator. Concrete classes implementing the Container interface will be responsible to implement Iterator interface and use it. IteratorPatternDemo, our demo class, will use NamesRepository, a concrete class implementation, to print Names stored as a collection in NamesRepository. Step 1 Create interfaces. Iterator.java
public interface Iterator {
public boolean hasNext(); public Object next(); } Container.java public interface Container { public Iterator getIterator(); } Step 2 Create concrete class implementing the Container interface. This class has inner class NameIterator implementing the Iterator interface. NameRepository.java
86
Container.java public interface Container { public Iterator getIterator(); } Step 2 Create concrete class implementing the Container interface. This class has inner class NameIterator implementing the Iterator interface. NameRepository.java public class NameRepository implements Container { public String names[] = {"Robert" , "John" ,"Julie" , "Lora"}; @Override public Iterator getIterator() { return new NameIterator(); } private class NameIterator implements Iterator { int index; @Override public boolean hasNext() { if(index < names.length){ return true; } return false; } @Override public Object next() { if(this.hasNext()){ return names[index++]; } return null; } } } Step 3 Use the NameRepository to get iterator and print names. IteratorPatternDemo.java
public class IteratorPatternDemo {
public static void main(String[] args) { NameRepository namesRepository = new NameRepository(); for(Iterator iter = namesRepository.getIterator(); iter.hasNext();){ String name = (String)iter.next(); System.out.println("Name : " + name); } } } Step 4 Verify the output.
Name : Robert
Name : John Name : Julie Name : Lora |