반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
8주차-2. Iterator 본문
728x90
반응형
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다.
틀린 부분은 알려주시면 감사하겠습니다.
어떤 패턴인가
내부 표현부를 노출하지 않고 어떤 집합 객체에 속한 원소들을 순차적으로 접근할 수 있는 방법을 제공합니다.
어떻게 쓰는가
Iterator: 원소를 접근하고 순회하는 데 필요한 인터페이스를 제공합니다.
ConcreteIterator: Iterator에 정의된 인터페이스를 구현하는 클래스로, 순회 과정 중 집합 객체 내에서 현재 위치를 기억하빈다.
Aggregate: Iterator 객체를 생성하는 인터페이스를 정의합니다.
ConcreteAggregate: 해당하는 ConcreteIterator의 인스턴스를 반환하는 Iterator 생성 인터페이스를 구현합니다.
class dataloader():
def __init__(self, data):
self.data = data
self.cur = 0
def __iter__(self):
return self
def __next__(self):
self.cur += 1
return self.data[self.cur]
어디서 활용되는가
이는 책의 내용 (p. 342)을 그대로 가져왔다.
1. 객체 내부 표현 방식을 모르고도 집합 객체의 각 원소들에 접근하고 싶을 때
2. 집합 객체를 순회하는 다양한 방법을 지원하고 싶을 때
3. 서로 다른 집합 객체 구조에 대해서도 동일한 방법으로 순회하고 싶을 때
My Opinion
Python에서 너무 많이 사용되고있어서 개념이 어렵게 받아들여지지 않을 것이다.
pytorch에서 dataloader를 사용할 때 얘가 iterator 패턴 사용하는 것 같다.
데이터를 순차적으로 불러올 때 __next__()로 불러오게하면 iterator 패턴을 사용하는 데이터를 만들 수 있다.
아는 패턴이 나와서 뭔가 기뻤다.
728x90
반응형
'스터디 > 디자인 패턴' 카테고리의 다른 글
9주차-2. Command (0) | 2021.07.21 |
---|---|
9주차-1. Composite (0) | 2021.07.21 |
8주차-1. Chain of responsibility (0) | 2021.07.08 |
7주차-2. Visitor (0) | 2021.06.23 |
7주차-1. Flyweight (0) | 2021.06.23 |
Comments