목차

이 책에 쏟아진 찬사 독자가 보내는 찬사 <헤드 퍼스트> 시리즈에 쏟아진 찬사 지은이 소개 <헤드 퍼스트> 시리즈 만든이 소개 옮긴이의 말 00장 들어가며 | 이 책을 읽는 방법 __ 이 책의 독자 __ 이 책이 이렇게 된 이유 __ 이 책의 구성 __ 여러분의 두뇌를 정복하는 방법 __ 일러두기 __ 테크니컬 리뷰어 __ 감사의 글 01장 디자인 패턴 소개와 전략 패턴 | 디자인 패턴의 세계로 떠나기 __ 오리 시뮬레이션 게임, SimUduck __ 오리 시뮬레이션 게임 차별화하기 __ 경고! 심각한 문제 발생 __ 상속을 생각하기 __ 인터페이스 설계하기 __ 해결 방법 고민하기 __ 소프트웨어 개발 불변의 진리 __ 문제를 명확하게 파악하기 __ 바뀌는 부분과 그렇지 않은 부분 분리하기 __ 오리의 행동을 디자인하는 방법 __ 오리의 행동을 구현하는 방법 __ 오리 행동 통합하기 __ 오리 코드 테스트 __ 동적으로 행동 지정하기 __ 캡슐화된 행동 살펴보기 __ 두 클래스를 합치는 방법 __ 첫 번째 디자인 패턴: 전략 패턴 __ 디자인 패턴 만나기 __ 패턴과 전문 용어 __ 디자인 패턴 사용법 __ 디자인 도구상자 안에 들어가야 할 도구들 __ 연습문제 정답 02장 옵저버 패턴 | 객체들에게 연락 돌리기 __ 기상 모니터링 애플리케이션 알아보기 __ WeatherData 클래스 살펴보기 __ 구현 목표 __ 기상 스테이션용 코드 추가하기 __ 원칙으로 추가 코드 살펴보기 __ 옵저버 패턴 이해하기 __ 옵저버 패턴의 작동 원리 __ 옵저버 패턴의 정의 __ 옵저버 패턴의 구조 __ 느슨한 결합의 위력 __ 기상 스테이션 설계하기 __ 기상 스테이션 구현하기 __ Subject 인터페이스 구현하기 __ 디스플레이 요소 구현하기 __ 기상 스테이션 테스트 __ 라이브러리 속 옵저버 패턴 알아보기 __ 인생을 바꿀 애플리케이션 만들기 __ 풀 방식으로 코드 바꾸기 __ 업데이트한 기상 스테이션 코드 테스트 __ 디자인 도구상자 안에 들어가야 할 도구들 __ 연습문제 정답 03장 데코레이터 패턴 | 객체 꾸미기 __ 초대형 커피 전문점, 스타버즈 __ OCP 살펴보기 __ 데코레이터 패턴 살펴보기 __ 주문 시스템에 데코레이터 패턴 적용하기 __ 데코레이터 패턴의 정의 __ Beverage 클래스 장식하기 __ 데코레이터 패턴 적용 연습 __ 커피 주문 시스템 코드 만들기 __ 음료 코드 구현하기 __ 첨가물 코드 구현하기 __ 커피 주문 시스템 코드 테스트 __ 데코레이터가 적용된 예: 자바 I/O __ java.io 클래스와 데코레이터 패턴 __ 자바 I/O 데코레이터 만들기 __ 새로 만든 자바 I/O 데코레이터 테스트 __ 디자인 도구상자 안에 들어가야 할 도구들 __ 연습문제 정답 04장 팩토리 패턴 | 객체지향 빵 굽기 __ 최첨단 피자 코드 만들기 __ 피자 코드 추가하기 __ 객체 생성 부분 캡슐화하기 __ 객체 생성 팩토리 만들기 __ 클라이언트 코드 수정하기 __ ‘간단한 팩토리’의 정의 __ 다양한 팩토리 만들기 __ 피자 가게 프레임워크 만들기 __ 서브클래스가 결정하는 것 알아보기 __ 피자 스타일 서브클래스 만들기 __ 팩토리 메소드 선언하기 __ 피자 팩토리 메소드로 피자 주문하기 __ Pizza 클래스 만들기 __ 최첨단 피자 코드 테스트 __ 팩토리 메소드 패턴 살펴보기 __ 병렬 클래스 계층구조 알아보기 __ 팩토리 메소드 패턴의 정의 __ 객체 의존성 살펴보기 __ 의존성 뒤집기 원칙 __ 의존성 뒤집기 원칙 적용하기 __ 생각 뒤집기 __ 의존성 뒤집기 원칙을 지키는 방법 __ 원재료 종류 알아보기 __ 원재료군으로 묶기 __ 원재료 팩토리 만들기 __ 뉴욕 원재료 팩토리 만들기 __ Pizza 클래스 변경하기 __ 올바른 재료 공장 사용하기 __ 바뀐 내용 되돌아보기 __ 새로운 코드로 또 피자 주문하기 __ 추상 팩토리 패턴의 정의 __ 팩토리 메소드 패턴과 추상 팩토리 패턴 __ 디자인 도구상자 안에 들어가야 할 도구들 __ 연습문제 정답 05장 싱글턴 패턴 | 하나뿐인 특별한 객체 만들기 __ 리틀