Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 직장인
- 객체지향프로그래밍
- JAVA개발자
- 성수볼거리
- docker
- 코딩
- Linux
- 객체지향
- 개발자
- 클린코드
- 직장인점심
- 성수직장인
- 헤드퍼스트디자인패턴
- IntelliJ
- DesignPattern
- Java
- 헤드퍼스트
- 책너두
- 상속
- 책읽기
- JavaScript
- 독서
- 독서일지
- 성수핫플
- 주니어개발자
- 오브젝트
- 성수맛집
- 디자인패턴
- 깨끗한코드
- 성수
Archives
- Today
- Total
닭발개발
[헤드퍼스트 디자인패턴] 27일차. 361-373pg 본문
728x90
27일차
헤드퍼스트 디자인패턴 [5주차_수요일]
361-373pg
요약
CHAPTER 09. 컬렉션 잘 관리하기 (feat. 반복자 패턴과 컴포지트 패턴)
- 객체 저장방식을 보여 주지 않으면서도 클라이언트가 객체에 일일이 접근할 수 있게 해 주는 방법
[ 반복자 패턴 ]
- 반복자 패턴이 Iterator 인터페이스에 의존한다는 사실!
- 컬렉션 : 객체를 모아 놓은 것. 리스트, 배열, 해시테이블 같은 다양한 자료구조에 컬렉션을 보관할 수 있는데, 어떤 자료구조를 사용하든 결국 컬렉션은 컬렉션 (집합체라고 하기도 한다.)
- 반복자를 사용하면 그 안에 들어있는 모든 항목에 접근할 수 있게 하려고 여러 메소드를 외부에 노출시키지 않으면서도, 컬렉션에 들어있는 모든 객체에 접근할 수 있습니다.
- 반복자를 구현한 코드를 컬렉션 밖으로 끄집어낼 수 있다는 장점도 있다.
- 따라서 반복작업을 캡슐화 했다고 할 수 있다.
[ Iterator가 장착된 신형 종업원 코드 ]
- 메뉴 구현법이 캡슐화, 종업원은 메뉴에서 메뉴 항목 컬렉션을 어떤 식으로 저장하는지 전혀 모른다.
- 반복자만 구현한다면 다형성을 활용해서 어떤 컬렉션이든 1개의 순환문으로 처리할 수 있다.
- 종업원은 인터페이스(반복자)만 알면 된다.
[ 인터페이스 개선하기 ]
- java.util.Iterator 인터페이스
- remove() 메소드 : next() 메소드에서 마지막으로 리턴한 항목을 컬렉션에서 삭제하는 기능 추가
- java.util에 Iterator 인터페이스도 있지만 ArrayList에 반복자를 리턴하는 iterator() 메소드도 있다. 즉, ArrayList에서 별도로 Iterator를 구현할 필요 없음.
[ 반복자 패턴의 정의 ]
- 컬렉션의 구현방법을 노출하지 않으면서 집합체 내의 모든 항복에 접근하는 방법을 제공한다.
- 디자인에 반복자를 적용했을 때 얻는 효과 : 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있으면 종류에 관계없이 모든 집합체에 사용할 수있는 다형적인 코드를 만들 수 있다.
- 반복자 패턴을 사용하면 모든 항목에 일일이 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체가 맡게 된다는 사실.
발췌
💡 반복작업을 캡슐화 : 반복자를 사용하면 그 안에 들어있는 모든 항목에 접근할 수 있게 하려고 여러 메소드를 외부에 노출시키지 않으면서도, 컬렉션에 들어있는 모든 객체에 접근할 수 있습니다. 반복자를 구현한 코드를 컬렉션 밖으로 끄집어낼 수 있다는 장점도 있다.
💡 java.util.Iterator 에서 remove()는 필수가 아니다. 사용하고 싶지 않으면 예외로 처리한다.
728x90
반응형
'책책책 책을 읽읍시다‼ ver.개발 > [ 헤드퍼스트 디자인패턴 ]' 카테고리의 다른 글
[헤드퍼스트 디자인패턴] 29일차. 387-398pg (0) | 2023.06.02 |
---|---|
[헤드퍼스트 디자인패턴] 28일차. 374-386pg (0) | 2023.06.01 |
[헤드퍼스트 디자인패턴] 26일차. 346-360pg (2) | 2023.05.31 |
[헤드퍼스트 디자인패턴] 25일차. 335-345pg (1) | 2023.05.31 |
[헤드퍼스트 디자인패턴] 24일차. 317-334pg (2) | 2023.05.26 |