프로그래밍/DesignPattern

이터레이터 패턴

모지사바하 2007. 8. 9. 13:30

ArrayList에 저장되어있는 객체와 객체배열에 저장되어있는 객체가 있다고 가정해보자.

ArrayList와 객체배열에 들어있는 객체를 for문을 이용해 가져온다고 가정하였을때 ,

ArrayList의 경우

for(int i=0;i<arrayList.size();i++){
  Item item = (Item)arrayList.get(i);
}

이런식으로 가져와야 하며

객체배열의 경우

for(int i=0;i<array.length;i++){
  Item item = array[i];
}

이런식으로 가져와야할것이다 .

만약, ArrayList와 객체배열로 개발된 소스가 통합될 때, 위 두가지 소스를 번갈아가면서

객체를 가져올것인가 ??

지금까지 본인이 디자인패턴에 대해 공부한 내용 가운데 제일 중요한 것을 꼽자면 아마

"바뀌는 부분을 캡슐화하라"라는 내용을 꼽을 수 있을 것이다.

지금 주어진 문제에서 바뀌는 부분은 분명하게 알 수 있다. 바로 메뉴에서 리턴되는 객체 컬렉션의 형식이 다르기 때문에 반복 작업(for문을 이용한 객체 가져오기)을 하는 방법이 달라지는 부분이다. 이 반복문을 캡슐화하기 위해 어떻게 해야할까 ??