POOPOO: 배변 일기 앱
SMALL
행동패턴 목록
- 책임연쇄 패턴 (Chan of Responsibility Pattern)
- 커맨드 패턴 (Command Pattern)
- 해석자 패턴 (Interpreter Pattern)
- 반복자 패턴 (Iterator Pattern)
- 중재자 패턴 (Mediator Pattern)
- 메멘토 패턴 (Memento Pattern)
- 관찰자 패턴 (Observer Pattern)
- 상태 패턴 (State Pattern)
- 전략 패턴 (Strategy Pattern)
- 템플릿 패턴 (Template Pattern)
요즘에는 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);
}
}
}
LIST