1. 먼저 컨테이너 Collection 인터페이스를 정의합니다.
package com.njupt.zhb.learn.iterator; public interface Collection { void add(Object o); int size(); Iterator iterator(); }
2. Iterator 인터페이스를 정의합니다.
package com.njupt.zhb.learn.iterator; public interface Iterator { Object next(); boolean hasNext(); }
3. ArrayList를 정의하고 Collection 인터페이스를 구현한 다음 반복자 인터페이스.
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. 테스트 프로그램 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() + " "); } } }
작성 실행 결과:
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
위에서 볼 수 있듯이 디자인 패턴은 어디에서나 객체 지향 다형성을 사용합니다. 인터페이스는 서브클래스의 함수를 호출합니다.
Java 디자인 패턴의 Iterator 패턴 도입과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!