독서 기록/디자인패턴

[디자인패턴] Iterator 패턴

JoJobum 2022. 10. 24.

Iterator 패턴의 목적

aggregate object의 내부 구현이나 구조를 보여주지 않으면서 aggregate object의 요소들에 접근할 수 있게 하는 것

aggregate object란  다른 object들을 모아두기 위한 객체 == (container, collection), ex) LinkedList, Hash Table...

 

 

 

Iterator 패턴을 사용하지 않는 경우

for(int i=0;i< breakfastItems.size();i++){
    MenuItem menuItem = (menuItem) breakfastItems.get(i);
}
for(int i=0;i< lunchItems.length;i++){
    MenuItem menuItem = lunchItems[i];
}

Iterator 패턴을 사용하는 경우

Iterator iterator = breakfastMenu.createIterator();
while(iterator.hasNext()){
    MenuItem menuItem = (MenuItem) iterator.next();
}
iterator = lunchMenu.createIterator();
while(iterator.hasNext()){
    MenuItem menuItem = (MenuItem) iterator.next();
}

즉 우리가 접근하려는 aggregate object가 array 이건 List건 신경 안써도 됨

 

SRP: 클래스는 변할 이유가 1가지여야한다

Aggregate 과 Iteration 이 다른 작업 

SRP를 잘 지킬수록 응집도(Cohesion)이 올라감

 

반응형

댓글