[자바 디자인 패턴] 행동패턴 - 반복자 패턴

2021. 3. 15. 17:24 JAVA/Design Patterns

행동패턴 목록

 

요즘에는 for ... in 문을 사용해도 동일한 효과를 얻을 수 있다고 생각하지만 속도측면에서는 어떤부분이 더 나은지 알아볼 필요가 있을 것 같다.

 

장점

 - 컬렉션 탐색의 변형을 지원합니다.

 - 컬렉션에 대한 인터페이스를 단순화합니다.

 

사용시기

 - 내부 표현을 노출시키지 않고 객체 컬렉션에 액세스하려는 경우

 

UML

 

Interface Class : Iterator, Container

public interface Iterator {  
    public boolean hasNext();  
    public Object next();  
}
public interface Container {  
    public Iterator getIterator();  
}

 

Container Class : CollectionofNames

public class CollectionofNames implements Container {
    public String name[]={"Ashwani Rajput", "Soono Jaiswal","Rishi Kumar","Rahul Mehta","Hemant Mishra"};   
      
    @Override  
    public Iterator getIterator() {  
        return new CollectionofNamesIterate() ;  
    }
    
    private class CollectionofNamesIterate implements Iterator{  
        int i;  
        
        @Override  
        public boolean hasNext() {  
            if (i<name.length){  
                return true;  
            }  
            return false;  
        }  
        
        @Override  
        public Object next() {  
            if(this.hasNext()){  
                return name[i++];  
            }  
            return null;      
        }  
    }  
}

 

OperationClass : IteratorPatternClient

public class IteratorPatternDemo {  
    public static void main(String[] args) {  
        CollectionofNames cmpnyRepository = new CollectionofNames();  
            
        for(Iterator iter = cmpnyRepository.getIterator(); iter.hasNext();){  
            String name = (String)iter.next();  
            System.out.println("Name : " + name);  
        }      
    }  
}

 

출처 : https://www.javatpoint.com/

know-one-by-one.tistory.com/49