예를들어 list 의 경우
list 내부에 포인터를 두면 멀티플(멀티 쓰레드)로 list 에 접근할때 오류가 생길 수 있는데
이것을 객체로 두면 멀티플로 접근이 가능해진다
즉 접근 포인터를 객체로 둔것이 iterator 패턴이다
굳이 필요한 상황 아니면 type<T>::iterator it; 쓰는게 났다
리스트자체에서 리스트에 대한 이터레이터를 만들때의 구현
( iterator 가 없어질때 List 를 동적 또는 정적 할당 하지 않았음으로 삭제 과정은 필요 없고 new 한 Listiterator 만 삭제 하면 된다
pListiter 으로 함수 안에서 생성된 list 를 다룰 수 있다
ListIterator* pListiter = list.createiterator();
했을때..
iterater* createiterator(){
return new ListIterator(this); // this 는 리스트의 주소
}
class ListIterator: public Iterator {
public :
ListIterator(LinkedList* pList){ this->pList = pList; }
private :
LinkedList* pList_;
};
반응형
'디자인패턴과방법론 > 디자인패턴' 카테고리의 다른 글
Observer 패턴 (0) | 2012.11.02 |
---|---|
memento 패턴 (0) | 2012.11.02 |
interpreter 패턴 (0) | 2012.11.02 |
command 패턴 (0) | 2012.11.02 |
chain of responsibility 패턴 (0) | 2012.11.02 |