일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 웹개발
- I'm Sorry
- 프로그래밍언어
- 컴퓨터공학
- 디자인패턴
- 클라우드컴퓨팅
- 파이썬
- 인공지능
- 데이터분석
- 알고리즘
- 머신러닝
- 소프트웨어
- 컴퓨터과학
- 데이터베이스
- 데이터과학
- 컴퓨터비전
- 데이터구조
- 버전관리
- 네트워크보안
- 딥러닝
- 자바스크립트
- 보안
- springboot
- 자료구조
- 빅데이터
- 사이버보안
- Yes
- 프로그래밍
- 네트워크
- 소프트웨어공학
- Today
- Total
목록iterator패턴 (2)
스택큐힙리스트
동영상/오디오 앱에서 “지난번 보던 자리부터 이어보기” 는 필수 UX입니다.이 기능은 사실 두 가지 디자인 패턴이 만나면 깔끔하게 풀립니다.Memento – 플레이어의 ‘스냅샷’을 저장·복원해 재생 위치를 되살린다.Iterator – 저장된 스냅샷 목록을 순회해 최근 기록을 탐색‧표시한다.아래 예시는 조회수 높은 한국 안드로이드 블로그들의 패턴 사용법을 베이스로, 실제 서비스 코드 형태로 재구성했습니다.1. 핵심 클래스 설계PlayerState (Memento)@JvmInline value class PlayerState(val positionMs: Long)불변(immutable)이라 복원 시 사이드이펙트 없음. VideoPlayer (Originator)class VideoPlayer(private ..
“for-each 없이도, 내부 구조 몰라도, 끝까지 한 번에!”왜 Iterator인가?코드가 커질수록 자료구조가 제각각입니다. 배열, 연결 리스트, 트리, 그래프…Iterator 패턴은 데이터 구조를 감추고 “다음 요소를 주세요” 라는 단일 프로토콜로 순회(Traversal)를 통일합니다.즉, 컬렉션 구현을 몰라도 같은 방식으로 next() / hasNext()만 호출하면 끝. 책임이 깨끗하게 나뉘니 테스트·유지보수·확장성이 모두 좋아집니다.핵심 아이디어Iterable(집합) – “Iterator를 하나 주세요!”를 요청받으면 해당 컬렉션에 맞는 반복자를 반환Iterator(반복자) – 순회 상태를 보유하며 hasNext()와 next()를 통해 한 걸음씩 이동클라이언트 – 내부 구조를 몰라도 동일한 ..