Introduction to the Iterator pattern for Java design patterns
- 2020-04-01 02:10:38
- OfStack
1. First define a container Collection interface.
2. Define an interface to the Iterator Iterator
3. Define an ArrayList, implement the Collection interface, and write an inner class that implements the Iterator interface.
4. Write the test program TestMain
Operation results:
As you can see from the above, the design pattern USES polymorphism in object orientation everywhere. The interface calls a function in a subclass. (link: http://xiazai.jb51.net/201307/yuanma/MyIterator_jb51net.rar)
package com.njupt.zhb.learn.iterator;
public interface Collection {
void add(Object o);
int size();
Iterator iterator();
}
2. Define an interface to the Iterator Iterator
package com.njupt.zhb.learn.iterator;
public interface Iterator {
Object next();
boolean hasNext();
}
3. Define an ArrayList, implement the Collection interface, and write an inner class that implements the Iterator interface.
package com.njupt.zhb.learn.iterator;
import com.njupt.zhb.learn.iterator.Collection;
public class ArrayList implements Collection {
Object[] objects = new Object[10];
int index = 0;
public void add(Object o) {
if(index == objects.length) {
Object[] newObjects = new Object[objects.length * 2];
System.arraycopy(objects, 0, newObjects, 0, objects.length);
objects = newObjects;
}
objects[index] = o;
index ++;
}
public int size() {
return index;
}
public Iterator iterator() {
return new ArrayListIterator();
}
private class ArrayListIterator implements Iterator {
private int currentIndex = 0;
@Override
public boolean hasNext() {
if(currentIndex >= index) return false;
else return true;
}
@Override
public Object next() {
Object o = objects[currentIndex];
currentIndex ++;
return o;
}
}
}
4. Write the test program TestMain
package com.njupt.zhb.learn.iterator;
import com.njupt.zhb.learn.iterator.ArrayList;
public class TestMain {
public static void main(String[] args) {
Collection c = new ArrayList();
for(int i=0; i<15; i++) {
c.add("string "+i);
}
System.out.println(c.size());
Iterator it = c.iterator();
while(it.hasNext()) {
Object o = it.next();
System.out.println(o.toString() + " ");
}
}
}
Operation results:
15
string 0
string 1
string 2
string 3
string 4
string 5
string 6
string 7
string 8
string 9
string 10
string 11
string 12
string 13
string 14
As you can see from the above, the design pattern USES polymorphism in object orientation everywhere. The interface calls a function in a subclass. (link: http://xiazai.jb51.net/201307/yuanma/MyIterator_jb51net.rar)