반복자는 복잡한 데이터 구조의 내부 세부 정보를 노출하지 않고 해당 구조를 차례대로 순회할 수 있도록 하는 행동 디자인 패턴입니다.
반복자 덕분에 클라이언트들은 단일 반복기 인터페이스를 사용하여 유사한 방식으로 다른 컬렉션들의 요소들을 탐색할 수 있습니다.
복잡도:
인기도:
사용 예시들: 이 패턴은 자바 코드에 자주 사용됩니다. 많은 프레임워크들과 라이브러리들은 이 패턴을 컬렉션을 탐색하는 표준 방법을 제공하기 위해 사용합니다.
다음은 코어 자바 라이브러리로부터 가져온 몇 가지 예시들입니다:
식별법: 반복자는 그의 탐색 메서드들(예: next
, previous
등)로 쉽게 인식할 수 있습니다. 또 반복자를 사용하는 클라이언트 코드는 반복자가 순회하는 컬렉션을 직접 접근하지 못할 수도 있습니다.
소셜 네트워크 프로필을 순회하기
이 예시는 반복자 패턴을 사용하여 클라이언트 코드에 아무런 통신 내용을 노출하지 않은 상태로 원격 소셜 네트워크 컬렉션의 소셜 프로필들을 순회하는 방법을 다룹니다.
iterators
iterators/ProfileIterator.java: 프로필 인터페이스의 정의
iterators/FacebookIterator.java: 페이스북 프로필들에 대한 순회의 구현
iterators/LinkedInIterator.java: 링크드인 프로필들에 대한 순회의 구현
social_networks
social_networks/SocialNetwork.java: 공통 소셜 네트워크 인터페이스의 정의
social_networks/Facebook.java: 페이스북
social_networks/LinkedIn.java: 링크드인
profile
profile/Profile.java: 소셜 프로필
spammer
spammer/SocialSpammer.java: 메시지 전송 앱
Demo.java: 클라이언트 코드
OutputDemo.txt: 실행 결과