독서 기록/디자인패턴
[디자인패턴] Iterator 패턴
JoJobum
2022. 10. 24. 11:21
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)이 올라감
반응형