반복 모드
반복 모드 (반복자 패턴) 자바와 닷넷 프로그래밍 환경은 매우 일반적인 디자인 패턴이다. 이 모드 오브젝트의 컬렉션의 순차 액세스 요소를 사용하고, 객체의 컬렉션은 기본 표현을 알 필요가 없다.
반복자 패턴은 행동 패턴을 속한다.
소개
의도 : 중합 반응의 각 요소의 개체에 액세스하는 방법이지만 오브젝트의 내부를 노출 할 필요를 제공한다.
주로 해결하기 : 전체 통합 오브젝트를 통과 할 수있는 다른 방법을.
때 사용하기 : 고분자 개체를 통과.
해결 방법 : 대신 집계 객체의 반복자에 대한 책임의 요소 사이의 거리에 있습니다.
키 코드는 : 인터페이스를 정의 : 다음 hasNext을, 다음.
적용 예 : 반복자에 JAVA.
장점 : 1, 다른 방식을 지원하는 집계 개체를 통과합니다.이 중합 반복자 클래스를 단순화. 3, 동일한 중합 여러 순회를 가질 수있다. 도 4는 반복적 인 모드에서, 원래의 코드를 수정하지 않고, 폴리머 반복자 클래스 손쉽게 새로운 클래스를 추가한다.
단점 : 인해 업무 반복자 패턴 데이터 저장 및 이송 된 데이터의 분리, 새로운 집합 클래스가 어느정도는 시스템의 복잡성을 증가 새로운 반복자 클래스에 상응하는 증가, 클래스 쌍의 수가 증가를 필요로 추가한다.
사용 시나리오 : 1, 내부 표현을 노출하지 않고 고분자 콘텐츠 개체에 액세스 할 수 있습니다.2 필요 집합체 오브젝트 탐색 방법의 다양성을 제공한다. 다른 집계 구조를 통과하는 3는 통합 된 인터페이스를 제공합니다.
주 : 반복 모드 오브젝트의 컬렉션의 탐색 동작을 분리, 추상 반복자 클래스는 모두 수집의 내부 구조에 노출하지 않고 수행 될 수 있도록, 책임, 또한 내부 데이터 수집에 대한 외부 코드를 투명하게 액세스 할 수 있도록한다.
실현
우리는 이야기반복자 인터페이스를생성하고 탐색 방법은컨테이너 인터페이스의반복자를 돌려줍니다. Entity 클래스컨테이너인터페이스가반복자 인터페이스를구현하기위한 책임이 구현합니다.
IteratorPatternDemo, 우리의데모 클래스는이름모음으로 저장NamesRepositoryNamesRepository를 인쇄 할 엔티티 클래스를 사용합니다.
1 단계
인터페이스를 만듭니다.
Iterator.java
공용 인터페이스의 반복자 { 공공 부울 다음 hasNext (); 공공 Object)을 (다음; }
Container.java
공용 인터페이스 컨테이너 { 공공 반복자에서는 getIterator (); }
2 단계
만들기 엔티티 클래스컨테이너는인터페이스를 구현합니다. 이 클래스는 내부 클래스NameIterator반복자 인터페이스를 실현하고있다.
NameRepository.java
공용 클래스 NameRepository는 컨테이너 {구현 공공 문자열 이름 [] = { "로버트", "존", "줄리", "로라"}; @Override 공공 반복자에서는 getIterator () { ) (새 NameIterator를 반환; } 개인 클래스 NameIterator는 Iterator를 {구현 INT 지수; @Override 공공 부울 다음 hasNext () { 경우 (인덱스 <names.length를) { true를 반환; } false를 반환; } @Override 다음 공공 개체 () { 경우 (this.hasNext ()) { 이름을 반환 [인덱스 ++] } NULL을 반환; } } }
3 단계
반복자를 얻을 수NameRepository를 사용하여이름을 인쇄 할 수 있습니다.
IteratorPatternDemo.java
공용 클래스 IteratorPatternDemo { 공공 정적 무효 메인 (문자열 []에 args) { NameRepository namesRepository = 새로운 NameRepository (); 대한 (반복자 ITER = namesRepository.getIterator (); iter.hasNext ()) { 문자열 이름 = (문자열) iter.next (); 에서 System.out.println ( "이름"+ 이름); } } }
4 단계
출력을 확인합니다.
이름 : 로버트 이름 : 존 이름 : 줄리 이름 : 로라