알라딘

헤드 퍼스트 디자인 패턴 - 14가지 GoF 필살 패턴! 유지 관리가 편리한 객체지향 소프트웨어를 만드는 법, 개정판

에릭 프리먼, 엘리자베스 롭슨, 케이시 시에라, 버트 베이츠 (지은이), 서환수 (옮긴이) | 한빛미디어
  • 등록일2022-09-26
  • 파일포맷pdf
  • 파일크기20 M  
  • 지원기기아이폰, 아이패드, 안드로이드, 태블릿, PC
  • 평점 평점점 평가없음

책소개

유지관리가 편리한 객체지향 소프트웨어 만들기!이유 2. 원스톱으로 배우는 14가지 GoF 핵심 디자인 패턴과 9가지 객체지향 디자인 원칙!이유 3. 시대의 변화에 맞춘 개정과 한국 독자만을 위한 특별판!▶ 이 책을 읽어야 하는 당신!경력과 세대를 넘어 오랫동안 ● 디자인 패턴은 시간과 노력을 줄여 줍니다● 디자인 패턴은 용도에 맞게 적절하게 사용해야 하는 도구입니다▶ 『헤드 퍼스트 디자인 패턴(개정판)』에서 다루는 내용▶ 『헤드 퍼스트 디자인 패턴(개정판)』에서 달라진 점 ▶<헤드 퍼스트> 시리즈의 특징▶ 예제 파일 다운로드▶ 관련 도서

저자소개

게임 설계를 하던 시절(Virgin, MGM, Amblin' 등에서 게임을 제작했습니다)부터 학습 이론에 관심이 있었다. UCLA 평생교육원의 엔터테인먼트 연구 프로그램에서 뉴 미디어 제작 강의를 하는 동안에 헤드 퍼스트 포맷의 상당 부분을 개발했다. 최근에는 썬 마이크로시스템즈에서 썬의 자바 강사들에게 자바 최신 기술을 가르치는 방법을 가르치는 수석 강사로도 활동하고 있다. 그녀는 버트 베이츠와 함께 'Head First Servlets & JSP'책에 있는 개념을 적극적으로 활용하여 수백여 명의 강사, 개발자, 심지어는 프로그래머가 아닌 일반인들에게도 강의를 하고 있다. 그리고 「소프트웨어 디벨로프먼트(Software Development)」의 2003년 생산성 대상을 수상하기도 한 전세계에서 가장 큰 자바 커뮤니티 웹사이트 가운데 하나인 javaranch.com의 공동 설립자이기도 하다. 자바 잼 긱 크루즈(Java Jam Geek Cruise, geekcruises.com) 사이트에 가면 그녀가 강의하는 자바 클래스 강의를 볼 수 있다.

목차

이 책에 쏟아진 찬사

독자가 보내는 찬사

<헤드 퍼스트> 시리즈에 쏟아진 찬사

지은이 소개

<헤드 퍼스트> 시리즈 만든이 소개

옮긴이의 말



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장 기타 패턴 | 다양한 패턴 빠르게 알아보기

__ 브리지 패턴

__ 빌더 패턴

__ 책임 연쇄 패턴

__ 플라이웨이트 패턴

__ 인터프리터 패턴

__ 중재자 패턴

__ 메멘토 패턴

__ 프로토타입 패턴

__ 비지터 패턴



찾아보기

한줄 서평