상세정보
헤드 퍼스트 디자인 패턴 : 14가지 GoF 필살 패턴! 유지 관리가 편리한 객체지향 소프트웨어를 만드는 법
- 저자
- 에릭 프리먼,엘리자베스 롭슨,케이시 시에라,버트 베이츠 저/서환수 역
- 출판사
- 한빛미디어
- 출판일
- 2022-04-11
- 등록일
- 2022-06-21
- 파일포맷
- PDF
- 파일크기
- 20MB
- 공급사
- YES24
- 지원기기
-
PC
PHONE
TABLET
웹뷰어
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
유지관리가 편리한 객체지향 소프트웨어 만들기!“『헤드 퍼스트 디자인 패턴(개정판)』 한 권이면 충분하다.이유 1. 흥미로운 이야기와 재치 넘치는 구성이 담긴 〈헤드 퍼스트〉 시리즈! 하나의 패턴에 하나의 이야기를 담았다. 틀에 박히지 않아 지루할 틈이 없는 구성과 친구와 이야기하듯 편안한 대화체로 이야기를 풀어낸다. 이야기 속에 다양한 방법으로 해결할 수 있는 질문과 90개 이상의 연습문제를 담았다. 마치 게임 퀘스트를 해결하듯 문제를 하나하나 해결하다 보면 학습한 내용이 머릿속에 강렬하게 남는다.이유 2. 원스톱으로 배우는 14가지 GoF 핵심 디자인 패턴과 9가지 객체지향 디자인 원칙! 현장에서 자주 사용되는 옵저버, 어댑터, MVC 패턴 등 14가지 GoF 객체지향 패턴을 중점으로 패턴의 정의, 사용 시기, 사용처, 사용 이유, 즉시 디자인에 적용하는 방법을 알려준다. 이와 더불어 객체지향 프로그래밍에 광범위하게 적용할 수 있는 OCP, 할리우드 원칙 등 9가지 객체지향 디자인 원칙과 패턴으로 생각하는 방법도 알려준다.이유 3. 시대의 변화에 맞춘 개정과 한국 독자만을 위한 특별판! 자바 8과 자바 16 이상에서 무리 없이 동작할 수 있도록 예제 코드를 수정했으며, 부가적인 설명과 Q&A 질문을 추가했다. 또한 16여 년 만의 개정을 기념해 오직 한국 독자만을 위한 새로운 삽화를 사용하고 한글 친화적인 구성했다. 원서를 읽을 때보다 더욱 편안하게 디자인 패턴을 학습할 수 있다.
저자소개
예일대학교 컴퓨터공학 박사 학위를 받고 월트 디즈니에서 CTO로 활동했다. 오라일리 미디어에서 〈헤드 퍼스트〉 시리즈를 총괄하며 『헤드 퍼스트 디자인 패턴』 등 다양한 도서를 집필했다. 현재는 개발자를 대상으로 온라인 학습을 제공하는 WickedlySmart에서 학습 콘텐츠를 제작하고 있다.
목차
이 책에 쏟아진 찬사독자가 보내는 찬사 〈헤드 퍼스트〉 시리즈에 쏟아진 찬사지은이 소개〈헤드 퍼스트〉 시리즈 만든이 소개옮긴이의 말00장 들어가며 | 이 책을 읽는 방법__ 이 책의 독자__ 이 책이 이렇게 된 이유__ 이 책의 구성__ 여러분의 두뇌를 정복하는 방법__ 일러두기__ 테크니컬 리뷰어__ 감사의 글01장 디자인 패턴 소개와 전략 패턴 | 디자인 패턴의 세계로 떠나기__ 오리 시뮬레이션 게임, SimUduck__ 오리 시뮬레이션 게임 차별화하기__ 경고! 심각한 문제 발생__ 상속을 생각하기__ 인터페이스 설계하기__ 해결 방법 고민하기__ 소프트웨어 개발 불변의 진리__ 문제를 명확하게 파악하기__ 바뀌는 부분과 그렇지 않은 부분 분리하기__ 오리의 행동을 디자인하는 방법__ 오리의 행동을 구현하는 방법__ 오리 행동 통합하기__ 오리 코드 테스트 __ 동적으로 행동 지정하기__ 캡슐화된 행동 살펴보기__ 두 클래스를 합치는 방법__ 첫 번째 디자인 패턴: 전략 패턴 __ 디자인 패턴 만나기__ 패턴과 전문 용어__ 디자인 패턴 사용법 __ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답02장 옵저버 패턴 | 객체들에게 연락 돌리기__ 기상 모니터링 애플리케이션 알아보기__ WeatherData 클래스 살펴보기__ 구현 목표__ 기상 스테이션용 코드 추가하기__ 원칙으로 추가 코드 살펴보기__ 옵저버 패턴 이해하기__ 옵저버 패턴의 작동 원리__ 옵저버 패턴의 정의__ 옵저버 패턴의 구조__ 느슨한 결합의 위력__ 기상 스테이션 설계하기__ 기상 스테이션 구현하기__ Subject 인터페이스 구현하기__ 디스플레이 요소 구현하기__ 기상 스테이션 테스트__ 라이브러리 속 옵저버 패턴 알아보기__ 인생을 바꿀 애플리케이션 만들기__ 풀 방식으로 코드 바꾸기__ 업데이트한 기상 스테이션 코드 테스트__ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답03장 데코레이터 패턴 | 객체 꾸미기__ 초대형 커피 전문점, 스타버즈__ OCP 살펴보기__ 데코레이터 패턴 살펴보기__ 주문 시스템에 데코레이터 패턴 적용하기__ 데코레이터 패턴의 정의__ Beverage 클래스 장식하기__ 데코레이터 패턴 적용 연습__ 커피 주문 시스템 코드 만들기__ 음료 코드 구현하기__ 첨가물 코드 구현하기__ 커피 주문 시스템 코드 테스트__ 데코레이터가 적용된 예: 자바 I/O__ java.io 클래스와 데코레이터 패턴__ 자바 I/O 데코레이터 만들기__ 새로 만든 자바 I/O 데코레이터 테스트__ 디자인 도구상자 안에 들어가야 할 도구들 __ 연습문제 정답04장 팩토리 패턴 | 객체지향 빵 굽기__ 최첨단 피자 코드 만들기__ 피자 코드 추가하기__ 객체 생성 부분 캡슐화하기__ 객체 생성 팩토리 만들기__ 클라이언트 코드 수정하기__ ‘간단한 팩토리’의 정의__ 다양한 팩토리 만들기__ 피자 가게 프레임워크 만들기 __ 서브클래스가 결정하는 것 알아보기__ 피자 스타일 서브클래스 만들기 __ 팩토리 메소드 선언하기 __ 피자 팩토리 메소드로 피자 주문하기__ Pizza 클래스 만들기__ 최첨단 피자 코드 테스트 __ 팩토리 메소드 패턴 살펴보기__ 병렬 클래스 계층구조 알아보기__ 팩토리 메소드 패턴의 정의__ 객체 의존성 살펴보기__ 의존성 뒤집기 원칙__ 의존성 뒤집기 원칙 적용하기__ 생각 뒤집기__ 의존성 뒤집기 원칙을 지키는 방법__ 원재료 종류 알아보기__ 원재료군으로 묶기__ 원재료 팩토리 만들기__ 뉴욕 원재료 팩토리 만들기__ Pizza 클래스 변경하기__ 올바른 재료 공장 사용하기 __ 바뀐 내용 되돌아보기__ 새로운 코드로 또 피자 주문하기 __ 추상 팩토리 패턴의 정의__ 팩토리 메소드 패턴과 추상 팩토리 패턴__ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답05장 싱글턴 패턴 | 하나뿐인 특별한 객체 만들기__ 리틀 싱글턴 알아보기__ 고전적인 싱글턴 패턴 구현법__ 초콜릿 보일러 코드 살펴보기__ 싱글턴 패턴의 정의__ 허쉬! 초콜릿 보일러에 문제 발생__ 멀티스레딩 문제 살펴보기__ 멀티스레딩 문제 해결하기__ 더 효율적으로 멀티스레딩 문제 해결하기__ 문제를 해결하는 적절한 방법 선택하기__ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답06장 커맨드 패턴 | 호출 캡슐화하기__ 만능 IoT 리모컨__ 협력 업체 클래스 살펴보기__ 커맨드 패턴 소개__ 음식 주문 과정 자세히 살펴보기__ 객체마을 식당 등장인물의 역할__ 객체마을 식당과 커맨드 패턴__ 첫 번째 커맨드 객체 만들기__ 커맨드 객체 사용하기__ 커맨드 패턴의 정의__ 커맨드 패턴 클래스 다이어그램 살펴보기__ 슬롯에 명령 할당하기__ 리모컨 코드 만들기__ 커맨드 클래스 만들기__ 리모컨 테스트__ API 문서 만들기__ 작업 취소 기능 추가하기__ 작업 취소 기능 테스트__ 작업 취소 기능을 구현할 때 상태를 사용하는 방법__ 선풍기 명령어에 작업 취소 기능 추가하기__ 선풍기 테스트 코드 만들기__ 선풍기 코드 테스트__ 여러 동작을 한 번에 처리하기__ 매크로 커맨드 사용하기__ 커맨드 패턴 활용하기__ 커맨드 패턴 더 활용하기__ 실전 적용! 커맨드 패턴__ 디자인 도구상자 안에 들어가야 할 도구들 __ 연습문제 정답07장 어댑터 패턴과 퍼사드 패턴 | 적응시키기__ 어댑터 살펴보기__ 객체지향 어댑터 알아보기__ 어댑터 사용 방법 알아보기__ 오리 어댑터 테스트__ 어댑터 패턴 알아보기__ 어댑터 패턴의 정의__ 객체 어댑터와 클래스 어댑터__ 실전 적용! 어댑터 패턴__ Enumeration을 Iterator에 적응시키기__ 퍼사드 패턴 맛보기__ 홈시어터 만들기__ 복잡한 방법으로 영화 보기__ 퍼사드 작동 원리 알아보기__ 홈시어터 퍼사드 만들기__ 단순화된 인터페이스 만들기__ 편한 방법으로 영화 보기__ 퍼사드 패턴의 정의__ 최소 지식 원칙__ 친구를 만들지 않고 다른 객체에 영향력 행사하기__ 절친에게만 메소드 호출하기__ 퍼사드 패턴과 최소 지식 원칙__ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답08장 템플릿 메소드 패턴 | 알고리즘 캡슐화하기__ 커피와 홍차 만들기__ Coffee 클래스와 Tea 클래스 만들기__ Coffee 클래스와 Tea 클래스 추상화하기__ 추상화 방법 들여다보기__ prepareRecipe( ) 메소드 추상화하기__ 커피와 홍차를 만드는 과정 다시 살펴보기__ 템플릿 메소드 패턴 알아보기__ 템플릿 메소드 패턴의 장점 알아보기__ 템플릿 메소드 패턴의 정의__ 템플릿 메소드 속 후크 알아보기__ 후크 활용하기__ 후크 코드 테스트__ 할리우드 원칙__ 할리우드 원칙과 템플릿 메소드 패턴__ 자바 API 속 템플릿 메소드 패턴 알아보기__ 템플릿 메소드로 정렬하는 방법__ 오리 정렬하기__ 오리 대소 비교__ 오리 정렬 코드 테스트__ 템플릿 메소드로 그래픽 출력하기__ AbstractList로 나만의 리스트 만들기__ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답09장 반복자 패턴과 컴포지트 패턴 | 컬렉션 잘 관리하기__ 속보! 객체마을 식당과 팬케이크 하우스 합병__ 메뉴 항목 살펴보기__ 루와 멜의 메뉴 구현법 비교하기__ 자격 요건 구현하기: 1차 시도__ 반복을 캡슐화하기__ 반복자 패턴 알아보기__ 객체마을 식당 메뉴에 반복자 추가하기__ 객체마을 식당 메뉴에서 반복자 사용하기__ 종업원 코드에 반복자 적용하기__ 종업원 코드 테스트__ 반복자 패턴의 특징 알아보기 __ 통합 식당 코드 다시 살펴보기 __ 인터페이스 개선하기__ java.util.Iterator 적용하기__ 변경된 통합 식당 코드 살펴보기__ 반복자 패턴의 정의__ 반복자 패턴의 구조 알아보기__ 단일 역할 원칙__ Iterable 인터페이스 알아보기__ 향상된 for 순환문 알아보기__ 향상된 for 순환문 사용 시 주의사항__ 객체마을 카페 메뉴 살펴보기__ 객체마을 카페 메뉴 코드 고치기__ 종업원 코드에 카페 메뉴 추가하기__ 카페 메뉴까지 추가된 통합 식당 코드 테스트 __ 반복자와 컬렉션__ 종업원 코드 개선하기__ 리팩터링 준비하기__ 컴포지트 패턴의 정의__ 컴포지트 패턴으로 메뉴 디자인하기__ 메뉴 구성 요소 구현하기__ 메뉴 항목 구현하기__ 메뉴 구현하기__ 종업원 코드에 컴포지트 적용하기__ 메뉴 코드 테스트__ 메뉴 코드 테스트 결과__ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답10장 상태 패턴 | 객체의 상태 바꾸기__ 최첨단 뽑기 기계__ 상태 기계 기초 지식 알아보기__ 뽑기 기계 코드 만들기__ 뽑기 기계 코드 테스트__ 알림! 뽑기 기계 코드 수정 요청__ 요청 사항 살펴보기__ 새로운 디자인 구상하기__ State 인터페이스 및 클래스 정의하기__ State 클래스 구현하기__ 뽑기 기계 코드 수정하기__ 뽑기 기계 전체 코드 살펴보기__ 다른 상태 클래스 구현하기__ 뽑기 기계 구조 다시 살펴보기__ 상태 패턴의 정의__ 보너스 알맹이 당첨 기능 추가하기__ 데모 버전 돌려보기__ 정상성 점검하기__ 리필 기능 추가해보기__ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답11장 프록시 패턴 | 객체 접근 제어하기__ 모니터링 코드 만들기__ 모니터링 기능 테스트__ 원격 프록시의 역할__ 모니터링 코드에 원격 프록시 추가하기__ 원격 메소드의 기초__ 메소드 호출 과정 알아보기__ 자바 RMI의 개요__ 원격 서비스 만들기__ 1단계: 원격 인터페이스 만들기__ 2단계: 서비스 구현 클래스 만들기 __ 3단계: rmiregistry 실행하기__ 4단계: 원격 서비스 실행하기__ 서버에 필요한 코드 살펴보기 __ 클라이언트 코드 살펴보기__ 뽑기 기계용 원격 프록시 고민하기__ GumballMachine 클래스를 원격 서비스로 바꾸기__ RMI 레지스트리 등록하기__ GumballMonitor 클라이언트 코드 고치기__ 새로운 모니터링 기능 테스트__ 데모 버전 만들기__ 데모 버전 돌려보기__ 프록시 패턴의 정의__ 원격 프록시와 가상 프록시 비교하기__ 앨범 커버 뷰어 만들기__ 앨범 커버 가상 프록시 설계하기__ ImageProxy 코드 만들기__ 앨범 커버 뷰어 테스트__ 보호 프록시 만들기__ 객체마을 데이팅 서비스__ Person 인터페이스 코드 만들기__ Person 인터페이스용 동적 프록시 만들기__ 1단계: InvocationHandler 만들기__ 2단계: 동적 프록시 생성 코드 만들기__ 데이팅 서비스 코드 테스트__ 데이팅 서비스 코드 테스트 결과__ 실전! 프록시 동물원 탐방하기__ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답__ 준비된 코드: 앨범 커버 뷰어 코드 12장 복합 패턴 | 패턴을 모아 패턴 만들기__ 패턴 섞어 쓰기__ 오리 시뮬레이션 게임에 다양한 패턴 적용하기__ 바뀐 내용 되돌아보기__ 오리 시뮬레이션 게임 클래스 다이어그램 살펴보기__ 복합 패턴의 왕 알현하기__ 모델-뷰-컨트롤러 알아보기__ 모델-뷰-컨트롤러 조금 더 알아보기__ 모델-뷰-컨트롤러에 사용되는 패턴 알아보기 __ 모델-뷰-컨트롤러로 BPM 제어 도구 만들기__ 모델, 뷰, 컨트롤러 합쳐서 보기__ 모델, 뷰, 컨트롤러 만들기__ 모델 만들기__ 뷰 알아보기__ 뷰 만들기__ 컨트롤러 만들기__ 컨트롤러 코드 살펴보기__ 모델, 뷰, 컨트롤러 코드 합치기 __ MVC 속 전략 패턴 자세히 알아보기__ 심박 모니터 모델 적응시키기__ 심박 모니터 컨트롤러 만들기__ 심박 모니터 코드 테스트__ 디자인 도구상자 안에 들어가야 할 도구들__ 연습문제 정답__ 준비된 코드: BPM 제어 도구 코드 13장 실전 디자인 패턴 | 패턴과 행복하게 살아가기__ 디자인 패턴의 정의__ 디자인 패턴의 정의 자세히 살펴보기__ 새로운 디자인 패턴 발견하기__ 디자인 패턴 분류하기__ 디자인 패턴 범주 알아보기__ 패턴으로 생각하기__ 패턴을 대하는 마음가짐__ 전문 용어의 위력 되새기기__ 4인방과 함께 하는 객체마을 여행__ 패턴을 찾아 떠나기 __ 실전! 패턴 동물원 탐방하기__ 사악한 안티 패턴 섬멸하기__ 디자인 도구상자 안에 들어가야 할 도구들 __ 객체마을을 떠나며__ 연습문제 정답14장 기타 패턴 | 다양한 패턴 빠르게 알아보기__ 브리지 패턴__ 빌더 패턴__ 책임 연쇄 패턴__ 플라이웨이트 패턴__ 인터프리터 패턴__ 중재자 패턴__ 메멘토 패턴__ 프로토타입 패턴__ 비지터 패턴찾아보기