메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

헤드 퍼스트 디자인 패턴(개정판)

14가지 GoF 필살 패턴! 유지 관리가 편리한 객체지향 소프트웨어를 만드는 법

한빛미디어

번역서

판매중

  • 저자 : 에릭 프리먼 , 엘리자베스 롭슨
  • 번역 : 서환수
  • 출간 : 2022-03-16
  • 페이지 : 656 쪽
  • ISBN : 9791162245262
  • 물류코드 :10526
초급 초중급 중급 중고급 고급
4.9점 (37명)
좋아요 : 18

유지관리가 편리한 객체지향 소프트웨어 만들기!

“『헤드 퍼스트 디자인 패턴(개정판)』 한 권이면 충분합니다!”

 

이유 1. 흥미로운 이야기와 재치 넘치는 구성이 담긴 <헤드 퍼스트> 시리즈!

하나의 패턴에 하나의 이야기를 담았습니다. 틀에 박히지 않아 지루할 틈이 없는 구성과 친구와 이야기하듯 편안한 대화체로 이야기를 풀어냅니다. 이야기 속에 다양한 방법으로 해결할 수 있는 질문과 90개 이상의 연습문제를 담았습니다. 마치 게임 퀘스트를 해결하듯 문제를 하나하나 해결하다 보면 학습한 내용이 머릿속에 강렬하게 남습니다.

 

이유 2. 원스톱으로 배우는 14가지 GoF 핵심 디자인 패턴과 9가지 객체지향 디자인 원칙!

현장에서 자주 사용되는 옵저버, 어댑터, MVC 패턴 등 14가지 GoF 객체지향 패턴을 중점으로 패턴의 정의, 사용 시기, 사용처, 사용 이유, 즉시 디자인에 적용하는 방법을 알려줍니다. 이와 더불어 객체지향 프로그래밍에 광범위하게 적용할 수 있는 OCP, 할리우드 원칙 등 9가지 객체지향 디자인 원칙과 패턴으로 생각하는 방법도 알려줍니다.

 

이유 3. 시대의 변화에 맞춘 개정과 한국 독자만을 위한 특별판!

자바 8과 자바 16 이상에서 무리 없이 동작할 수 있도록 예제 코드를 수정했으며, 부가적인 설명과 Q&A 질문을 추가했습니다. 또한 16여 년 만의 개정을 기념해 오직 한국 독자만을 위한 새로운 삽화를 사용하고 한글 친화적인 구성했습니다. 원서를 읽을 때보다 더욱 편안하게 디자인 패턴을 학습할 수 있습니다.

 

 

이 책을 읽어야 하는 당신!

 

● 소프트웨어 출시는 완벽 그 자체! “어?~ 코드 수정하려고 다시 보니까 난리…”

→ 유지보수만 생각하면 그저 눈물인 주니어 (자바) 개발자

 

● 코딩 실력은 장판파의 장비! “어?~ 팩토리 메소드 패턴을 이렇게 적용했던가?”

→ 디자인 패턴을 다시 한번 살펴보고 싶은 시니어 (자바) 개발자

 

● 혼자 공부해서 다진 프로그래밍 언어 실력! “어?~ 근데 패턴이 뭐야?” 

→ 개발 현장의 소프트웨어 디자인 방법이 궁금한 개발자 지망생

 

 

02. 헤드 퍼스트 디자인 패턴 상세 페이지(940px).jpg

에릭 프리먼 저자

에릭 프리먼

예일대학교 컴퓨터공학 박사 학위를 받고 월트 디즈니에서 CTO로 활동했다. 오라일리 미디어에서 〈헤드 퍼스트〉 시리즈를 총괄하며 『헤드 퍼스트 디자인 패턴』 등 다양한 도서를 집필했다. 현재는 개발자를 대상으로 온라인 학습을 제공하는 WickedlySmart에서 학습 콘텐츠를 제작하고 있다.
엘리자베스 롭슨 저자

엘리자베스 롭슨

예일대학교 컴퓨터공학 석사 학위를 받고 다양한 기술 주제로 개인별 워크숍과 온라인 수업을 제작했으며, 사람들이 기술을 이해하는 데 도움이 될 만한 학습 경험을 만드는 일에 몰두했다. 오라일리 미디어에서 특수 프로젝트 책임자로 활동했으며, 현재는 WickedlySmart의 공동 창업자로 다양한 학습 콘텐츠를 제작하고 있다.
서환수 역자

서환수

서울대학교 물리학과에서 학사, 박사 학위를 받았고 지금은 삼성종합기술원에서 반도체 분야를 연구하고 있다. 한빛미디어에서 『Head First Java』, 『Programming Challenges: 알고리즘 트레이닝 북』, 『프로그래머로 사는 법』, 『슬라이드올로지』를 비롯해 여러 권을 번역했다.

 

이 책에 쏟아진 찬사

독자가 보내는 찬사 

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

지은이 소개

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

옮긴이의 말

 

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

__ 브리지 패턴

__ 빌더 패턴

__ 책임 연쇄 패턴

__ 플라이웨이트 패턴

__ 인터프리터 패턴

__ 중재자 패턴

__ 메멘토 패턴

__ 프로토타입 패턴

__ 비지터 패턴

 

찾아보기

경력과 세대를 넘어 오랫동안 

객체지향 개발자의 성장을 도와준 

디자인 패턴 교과서의 화려한 귀환!


✔︎ 2005년부터 디자인 패턴 도서 분야 부동의 1위

✔︎ 디자인 패턴의 고전이자 바이블

 

 

● 디자인 패턴은 선배들의 경험이 담긴 문제 해결 방법입니다

예로부터 건물을 지을 때는 사전 설계가 중요했습니다. 어떤 문제나 수정 사항이 발생했을 때, 하나하나 시행착오를 겪으면서 다시 짓기에는 시간과 비용이 많이 들기 때문입니다. 사람들은 같은 실수를 반복하지 않기 위해 자신들의 시행착오를 바탕으로 특정 상황에서 발생하는 문제의 패턴을 발견하고 해결방안을 기록으로 남겼습니다. 이를 ‘디자인 패턴’이라고 부릅니다.

 

건축학에서 시작된 디자인 패턴은 코드로 소프트웨어를 구축한다는 점에서 소프트웨어 설계에도 동일하게 적용할 수 있습니다. 누군가‘가’ 겪은 문제가 누군가‘만’ 겪은 문제는 아니므로 동일한 문제를 먼저 경험한 선배들의 지식을 활용한다면 소프트웨어 설계의 효율을 추구할 수 있습니다.

 

● 디자인 패턴은 시간과 노력을 줄여 줍니다

세상에 완벽한 소프트웨어는 없습니다. 시대에 따라 기술과 사용자의 요구가 변하기 때문입니다. 프로그래밍을 할 때 항상 ‘지금 이 소프트웨어를 언젠가는 고쳐야 한다’라고 생각해야 합니다. 사전에 소프트웨어를 고칠 때 코드에 미치는 영향을 최소화할 수 있도록 디자인한다면 자질구레한 코딩에서 벗어나 더 좋은 소프트웨어를 만드는 데 더 많은 시간을 투자할 수 있습니다. 

 

디자인 패턴의 유용성은 단지 선배들의 코드를 ‘재사용’하는 것에 그치지 않습니다. 팀을 이끌며 프로젝트를 진행하고 다양한 형태로 발생할 수 있는 문제를 해결하는 데도 적용할 수 있습니다. ‘디자인 패턴’에 관한 조예가 깊다면 적재적소에 맞는 해결책을 효율적으로 제시할 수 있으며, “자신에게 귀를 기울이고 있는 모든 객체를 추적할 수 있고, 새로운 데이터가 들어올 때마다 각각의 청취자한테 메시지를 보내 주며, 청취자는 언제든지 청취자 목록에 참가하거나 탈퇴할 수 있는 방송용 클래스라는 걸 만들어서 이 문제를 해결하자!”라고 길게 설명할 필요 없이 “옵저버 패턴을 쓰자!"라는 한 문장으로 효율적인 의사소통을 할 수 있습니다. 

 

● 디자인 패턴은 용도에 맞게 적절하게 사용해야 하는 도구입니다

하지만 디자인 패턴이 만병통치약은 아닙니다. 빈대를 잡으려고 초가삼간을 다 태우면 안되는 것처럼 패턴을 아무 코드에나 적용해서는 안 됩니다. <Hello, World!> 같은 프로그램에까지 패턴을 적용하면 오히려 코드가 복잡해지고, 남들이 알아보기 힘들어지고, 유지보수가 어려워져 결국 파국에 이르기 때문입니다. 디자인 패턴은 좋은 소프트웨어를 만드는 도구일 뿐입니다. 모든 도구는 용도에 맞게 적절하게 사용할 때 그 위력을 발휘합니다. 

 

사실 어떤 코드에 디자인 패턴을 써야 하는지 배우려면 많은 시간과 노력이 필요합니다. 디자인 패턴을 완전히 이해해야만 어떤 코드가 스파게티 코드인지 알 수 있기 때문입니다. 하지만 디자인 패턴의 핵심 요소만 쏙 뽑아서 알려주고, 재미있게 설명해 주는 책이 있다면 어떨까요? 적은 시간과 노력으로 디자인 패턴을 배울 수 있어서 행복하지 않을까요? 그런 책을 멀리서 찾을 필요는 없습니다. 『헤드 퍼스트 디자인 패턴(개정판)』이 바로 여기 있으니까요. 

 

 

▶ 『헤드 퍼스트 디자인 패턴(개정판)』에서 다루는 내용

 

『헤드 퍼스트 디자인 패턴』은 2005년 출간 후 17년이라는 시간 동안 디자인 패턴 분야에서 부동의 베스트셀러 1위를 지켜왔습니다. 경력과 세대를 넘어 많은 개발자에게 사랑받는 이유는 다음과 같이 ‘GoF 디자인 패턴의 핵심’만을 다루는 데 있습니다. 

 

✔︎ 14가지 GoF 핵심 패턴의 사용 시기와 이유!

✔︎ 즉시 디자인에 적용하는 방법!

✔︎ 쓰지 말아야 하는 상황!

✔︎ 패턴의 근간이 되는 객체지향 디자인 원칙!

✔︎ 그 밖에 알아 두면 좋은 9가지 패턴의 정의와 사용법!

 

 

▶ 『헤드 퍼스트 디자인 패턴(개정판)』에서 달라진 점

 

✔︎ 보편적으로 사용하는 자바 8부터 최신 버전인 자바 16 이상에서 무리 없이 동작할 수 있게 예제 코드 수정

✔︎ 부가 설명과 Q&A 질문 추가 

✔︎ 한국 독자만을 위한 새로운 삽화와 한글 친화적인 구성

 

* 16여 년 만의 개정을 기념해 초판보다 편안하게 디자인 패턴을 학습할 수 있도록 새로운 한국어판을 만들었습니다.

 

 

▶<헤드 퍼스트> 시리즈의 특징

 

그리고 디자인 패턴을 지루하지 않은 방법으로 배우는 것도 정말 중요합니다. <헤드 퍼스트> 시리즈를 한 권이라도 읽어 보았다면 이 책이 어떤 책인지 쉽게 짐작할 수 있을 겁니다. ‘볼 거리가 많고, 머릿속에 쏙쏙 들어오는 방식’으로 구성되어 있어 머리가 먼저 반응합니다. 

 

✔︎ 친구와 이야기하는 듯한 편안한 대화체!

✔︎ 예상하기 어려운 재치 넘치는 구성!

✔︎ 90개가 넘는 도전적인 연습문제!

✔︎ 여러 관점에서 생각해 볼 수 있는 흥미로운 이야기!

✔︎ 빠르게 따라해 볼 수 있는 간단한 예제 코드!

 

이 밖에 패턴 중독을 피하는 방법과 디자인 패턴을 발견하는 방법도 다루고 있어 미래의 패턴 디자이너에게도 도움이 될 것입니다.

 

 

예제 파일 다운로드

 

     → https://www.hanbit.co.kr/src/10526

     → https://wickedlysmart.com/head-first-design-patterns

 

 

관련 도서

  • 『이것이 자바다』(한빛미디어, 2015)
  • 『혼자 공부하는 자바』(한빛미디어, 2019)
  • 『이것이 C#이다』(한빛미디어, 2021)
  • 『쉽게 배워 바로 써먹는 디자인 패턴』(한빛미디어, 2020)
  • 『머신러닝 디자인 패턴』(한빛미디어, 2021)

  • 디자인 패턴.
    개발자라면 '꼭' '제대로' 이해하고 싶은 것이죠.
    GoF의 디자인패턴이 가장 고전이고 최고이긴 하지만 쉽게 이해하기 어렵습니다.

    예전에 지인에게 디자인 패턴에 대한 책을 추천해 달라고 했더니 '헤드 퍼스트 디자인 패턴'을 말하더군요.
    그런데 절판중이라 볼 수 없었습니다.
    그런데....그 책의 개정판이 나오니 너무 반가웠습니다.

     

    designpattern.jpg

     

    이 책은 그 많은 디자인 패턴 중 가장 많이 사용하는, 그리고 꼭 알고 있어야 할 14가지 디자인 패턴에 대해 설명하고 있습니다.
    결론부터 말하자면 왜 지인이 이 책을 추천했는지를 알 수 있었습니다.
    '헤드 퍼스트' 시리즈는 쉬운 설명으로 유명하죠.
    쉽지 않은 디자인 패턴을 정말 이해하기 쉽게 설명해 주고 있습니다.

     

    adptor.jpg

     

    factory.jpg

     

    opserver.jpg

     

    위 그림만으로도 어떤 내용인지 와 닿지 않나요?
    그간 알쏭달쏭했던 디자인 패턴에 대해 이 책으로 정확하게 이해할 수 있었습니다.
    함께 제공하는 자바 코드는 어떻게 구현하고 응용할 수 있는지 명확하게 보여줍니다.

     

     

    pattern.jpg

     

     

    디자인 패턴.
    우리말로 옮기면 '디자인 형태, 유형' 정도로 번역할 수 있습니다.
    지금까지 소프트웨어를 개발하면서 도출된 공통된 유형들에 대해 최적화된 양식을 제공하는 것입니다.
    어느 정도 경력을 프로그래머라면 디자인 패턴을 배우지 않았어도 이미 몇몇의 패턴을 적용해 사용하고 있을 수도 있습니다.
    디자인 패턴을 배워야 하는 이유는 이미 잘 설계되고 검증된 패턴을 사용할 수 있다는 것이죠.
    같은 수레바퀴를 또 만들 필요가 있을까요?

    design.jpg

    패턴은 정형화되어 있지만, 그 자체로는 결코 정해져 있지 않습니다.
    앞으로도 수많은 패턴들이 나올 것이고, 직접 만들 수도 있습니다.
    패턴은 해결을 위한 도구임을 잊지 말아야 합니다.
    디자인 패턴에 너무 몰입하게 되면 결과가 아닌 방법에 치우칠 수 있습니다.
    디자인 패턴을 배우는 목적은 해결을 위한 다양한 도구 사용법입니다.

    누군가 저에게 쉽고 재미있는 디자인 패턴 책을 물어본다면 이 책을 권하고 싶습니다.
    이 책은 디자인 패턴이 결코 어렵지 않음을 보여주고 있습니다.

    [한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.]

  •  

     

    헤드퍼스트 디자인패턴(개정판)

     

    헤드퍼스트 디자인패턴 개정판이 나왔다.

    2005년 초판 발행이후 17년 만에 개정판이 나온 것이다.

     

    왼쪽이 초판, 오른쪽이 개정판이다.

     

    초판 발행 이후 개정판이 나오기까지 오랜 시간이 흘렀다.

    그 오랜 시간만큼 소프트웨어 개발 방법은 많이 변했을까??

    프로그래밍 언어 자체에 대한 버전업과 수많은 언어들의 탄생, 개발도구(IDE 등)과 같은 것들은 많이 발전했지만

    소프트웨어에 녹아든 개발 방법론에서 핵심적인 내용은 예전이나 지금이나 별반 다르지 않다.

     

    이번에 새로나온 디자인패턴 개정판도 기존 책의 핵심적인 내용은 크게 다르지 않다.

    하지만 시간이 가면 그 시대의 유행이나 트랜드가 바뀌는 것처럼

    초판 발행 당시의 삽화나 문구가 현재에 맞게 대폭 수정되었다.

    또한 내용을 이해아는데 필요하다고 생각되는 부분에는 추가적인 내용을 덧붙여 내용이 보강되었다.

     

     

     

     

    하지만 예전 그대로 회사동료간의 대화나 스승과 제자 사이의 대화처럼

    구어체를 사용한 개념 설명은 어려운 내용을 쉽게 이해할 수 있도록 도와준다.

     

     

     

     

     

    디자인패턴을 모른다고 프로그램을 짤 수 없는 것은 아니다.

    프로그램을 못 짜지도 않는다.

    하지만 다른 개발자와 대화를 할때 기능에 대한 장황한 설명보다는 그 기술에 맞는 디자인 패턴을 이야기 하면

    이야기도 단순해지고 시간도 절약된다.(개발자에게 시간은 금이다!) 

     

    이 책을 읽어야 할 독자가가 따로 존재 한다고 보지 않는다.

    개발을 공부하는 학생이든, 개발을 시작한지 얼마 되지 않은 신입 개발자이든

    소프트웨어를 설계하는 설계자이든 모두가 보아야 할 책이 아닌가 생각된다.

     

     

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

     

  • #헤드퍼스트 #GoF #패턴

    한빛미디어의 “헤드퍼스트 디자인 패턴 (개정판)” 도서를 소개합니다.

     

     

    DesignPattern-1.png

     

     

     

     

    디자인 패턴이라고 하면 대부분 GoF 디자인 패턴을 떠올릴 것이다. 본인의 경우, 부끄러운 얘기지만 디자인 패턴을 접한지는 몇 년이 채 되지 않았다. 오랜기간 임베디드 개발을 하면서 C 네이티브 코드를 주로 다루게 되면서 디자인 패턴이 나와 무슨 관련이랴…정도로만 생각을 해왔는데, 네이티브도 C++과 Go로 대체되고, OS 역시 안드로이드가 주류가 되면서 갑자기 필요해진 부분이 있다. 이유야 팀원 간의 협업을 위해서이고, 설계 단계에서 합류한 인원들과 논의를 하다보니 디자인 패턴을 기본으로 논의를 하다보니 급하게 읽은 책이 GoF 디자인 패턴이었다.

     

    도서를 읽기 전에 가장 큰 기대는 GoF 디자인 패턴을 얼마나 커버하고, 쉽게 전달할지 였다. GoF 디자인 패턴을 끝까지 읽고 이해한다는 것이 본인에게는 쉽지 않아서, 그렇다면 다른 독자들에게는 이러한 내용들을 얼마나 쉽게 전달할지, 어떤 방식으로 전달할지가 기대와 함께 우려 또한 되었다. 가령, 생성 패턴 5개, 구조 패턴 7개, 행위 패턴 11개, 총 23개의 패턴을 모두 구성할 것인지… 이것은 목차를 살펴보면 기대에 부합되는 내용들이 포함되어 있는 것을 알 수 있었다.

     

    - 01장 디자인 패턴 소개와 전략 패턴 | 디자인 패턴의 세계로 떠나기

    - 02장 옵저버 패턴 | 객체들에게 연락 돌리기

    - 03장 데코레이터 패턴 | 객체 꾸미기

    - 04장 팩토리 패턴 | 객체지향 빵 굽기

    - 05장 싱글턴 패턴 | 하나뿐인 특별한 객체 만들기

    - 06장 커맨드 패턴 | 호출 캡슐화하기

    - 07장 어댑터 패턴과 퍼사드 패턴 | 적응시키기

    - 08장 템플릿 메소드 패턴 | 알고리즘 캡슐화하기

    - 09장 반복자 패턴과 컴포지트 패턴 | 컬렉션 잘 관리하기

    - 10장 상태 패턴 | 객체의 상태 바꾸기

    - 11장 프록시 패턴 | 객체 접근 제어하기

    - 12장 복합 패턴 | 패턴을 모아 패턴 만들기

    - 13장 실전 디자인 패턴 | 패턴과 행복하게 살아가기

    - 14장 기타 패턴 | 다양한 패턴 빠르게 알아보기

    __ 브리지 패턴

    __ 빌더 패턴

    __ 책임 연쇄 패턴

    __ 플라이웨이트 패턴

    __ 인터프리터 패턴

    __ 중재자 패턴

    __ 메멘토 패턴

    __ 프로토타입 패턴

    __ 비지터 패턴

     

    헤드퍼스트, 역시 쉬운 전달

    앞서 본인의 경험으로 디자인 패턴을 접하게 된 계기를 언급하였는데, 지금은 시간이 흘러서 본인 역시 패턴을 기준으로 설계하고 있으나, 패턴이 새로운 것은 아니었고, 구현해야 하는 형태와 동작에 따라 이러이러하게 구조화를 한다는 것이 패턴이라는 이름으로 정리가 되었을 뿐이라고 생각하고 있다.

     

     

    가령 “헤드퍼스트 디자인 패턴”에서 패턴들을 목차 내용에 따라 바로 진입하기 보다는 어플리케이션 설계를 예를 들어 설명하고 있다. “가상 모니터링 애플리케이션”을 설계를 한다고 했을 때 센서 데이터를 모니터링 애플리케이션으로 보여주기 위해서 자료를 어떻게 전달할지를 예시로 들고 있다. 물론 이것은 “구현 목표”에 따라 설계 내용이 달라지는 것은 당연합니다. 이 과정에서 어떠한 패턴을 적용하는 것이 유리한지 유도됩니다.

     

    위의 처리를 위해서 도서에서 처음으로 소개하는 패턴은 옵저버 패턴(observer pattern)입니다.

    옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자들(옵저버) 의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 앞서 센서 데이터의 변화를 모니터링하기에 가장 좋은 패턴이 아닌가…

     

    이와 같이 디자인 패턴을 목록화하여 각각의 패턴을 직접적으로 설명하기 보다는 어떤 소프트웨어 설계를 하는 예시를 두고, 이를 어떻게 구조화할지, 그래서 어떤 패턴을 적용할지를 독자에게 생각하도록 내용을 구성하여 디자인 패턴을 처음 접하는 독자는 자연스레 고개를 끄덕일 수 있다는 것이 본 도서의 장점이 아닐까 싶다.

     

     

    DesignPattern-6.png

     

     

  •  

    KakaoTalk_Photo_2022-04-24-23-25-23 001.jpeg

     

     

    개발을 하다보면 늘 코드의 형태를 고민하게 된다. 재사용할 수 있고, 의도가 분명하며, 특정 문제를 해결할 수 있는 코드를 작성하기 위해 디자인 패턴을 이해하는 것이 큰 도움이 된다. 이 책은 유명한 GoF 객체지향 디자인 패턴을 알기쉽게 정리한 입문용 책이다. 중고 서점의 개발서 책장을 둘러보면 이 헤드퍼스트 개정 이전 책이 항상 조금 낡은 상태로 꽂혀져 있었다. 개정 전 책도 그림책과 말풍선이 가득해서 만화책 보듯이 이 책을 훑어봤던 기억이 난다. 당시에 이런 파격적인 책 구성에 끌려서 모든 <헤드퍼스트> 시리즈를 너무 사고 싶었는데, 이번에 한국 정서에 맞는 멋진 일러스트로 업데이트된 개정판 신간이 나왔다!

     

    <헤드퍼스트> 시리즈가 지향하는 학습 방향은 두뇌를 자극해 재밌게 공부하는 것이다. 그래서 이 책은 대화체를 사용해서 이야기 하듯이 개념을 설명하고, 스토리와 그림이 가득하다. 두껍고 그림 없는 개발서적이 끌리지 않는 학습자들에게 딱 맞는 책이다. 팩토리 패턴 챕터에서는 피자를 만들기를 예로 들면서 이 패턴을 공부한다. 스스로 실습해볼 수 있는 코드 및 확인 퀴즈가 있어서 심심할 틈 없이 공부할 수 있다.

     

    이 책에서 소개하는 디자인 패턴은 옵저버, 데코레이터, 팩토리, 싱글턴, 커맨드, 어댑터, 프록시 등 정말 다양하다. 자바, 파이썬을 공부했을 당시에 '싱글톤', '데코레이터' 같은 패턴 이름을 자주 들어봤다. 초보자인 내가 블로그 글과 강의만으로 이 개념들을 이해하는 데 한계가 있었다. 딱딱한 개념설명에 좌절하는 디자인 패턴 입문자에게는 헤드퍼스트 디자인패턴을 추천한다. 패턴을 사용하는 이유와 활용 방법을 이해하고 긴단하게 실습 코드를 작성해보는 과정을 통해 누군가에게 설명할 수 있을 정도로 명확하게 개념을 이해할 수 있을 것이다.

     

     

    이 책은 개발자가 만든 것 같지 않을 정도로 훌륭한 학습 철학과 가이드를 담고 있다. 그럼에도 페이지를 넘길 때마다 개발자스러운 유머가 보여서 개발자가 만든 거 맞네 하고 고개를 끄덕이게 된다. 다들 개발하다가 머리 터질 때마다 헤드퍼스트 원고를 쓰면서 스트레스를 푸셨을 것 같다. 대단한 사람들. 헤드퍼스트 개발서 시리즈가 계속 출간되어서 많은 사람들이 재밌게 프로그래밍 공부에 빠져들었으면 좋겠다.

     "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

  • - 디자인 패턴에 대해 공부하고 싶다면 꼭 추천하고 싶은 책.
    - 다양한 예시가 있어 이해하기 쉽다.
    - 사놓고 두고두고 읽고 싶은 책.
    - 실무에서 하나씩 적용해보고 싶다.

  • 신입사원 때 당시 팀장님이 매일 디자인 패턴을 공부해오게 한다음 발표를 시키셨다.

    인터넷에서 찾아보는 것도 좋지만 검증된 책을 가지고 공부하는게 좋겠다고 하셔서 사내 도서관에서 찾아서 공부했던 책이 바로 헤드퍼스트 디자인패턴이었다.

    디자인 패턴에 대해서 어렴풋이 알고 있었지만 정확히 어떤 것들이 있는지 그때 처음 알게 되었고 이를 계기로 GOF의 디자인 패턴 책을 사서 보게 되었다 (물론 다는 못봤지만....ㅎㅎ)

    이렇게 디자인 패턴에 대해 알게 해주었던 헤드퍼스트 디자인패턴이 개정판으로 나왔다는 소식을 페이스북을 통해서 알게되었다. (아직도 기억나는 피자가게 예제...)

    그래서 개정판은 어떤지 궁금했던 찰나에 개정판을 볼 수 있는 좋은 기회가 생겨 읽게되었다! (Lucky~!!!)

    헤드퍼스트 디자인패턴

    워낙 예전에 이전 버전을 읽었던 지라 개정판 이전 내용들은 기억이 안나지만 그래도 읽으면서 헤드퍼스트 시리지 특유의 구성은 여전했다.

    다양한 그림과 말주머니가 가득한 이야기 형식으로 보다 이해하기 쉽게 구성되어 있었다 (이런 부분이 호불호가 있다고 하지만)

    대학교 때 교재로 헤드퍼스트 시리즈를 많이 접했던 나에게는 매우 친숙한 구성이다.

    또한 헤드퍼스트 디자인패턴은 예제 소스들이 자바로 되어 있어서 자바 개발자인 나에게는 매우 좋았다. (이전 버전에 발표할 때도 해당 예제 소스들을 바탕으로 발표하였었다)

    번역체들이 이전 버전과 많이 달라졌다고 하는데 그 부분까지는 잘 기억이 안나지만 개정이 되면서 확실히 더 자연스럽고 깔끔한 문체들로 바뀐 것 같고, 최신 버전의 설명들로 바뀐 부분이 있는 것 같았다.

    읽다보니 신입 개발자 시절 발표할 때가 생각나면서 여전히 나에게는 디자인 패턴은 헤드퍼스트 디자인패턴인 것 같다ㅎㅎ

     

  • designpattern.jpg

     

    안녕하세요 괴짜 개발자 namedboy 입니다.
     
    오늘은 아는 사람은 다 아는 디자인패턴에 대해 얘기를 조금 해볼까 합니다.
     
    헤드퍼스트 디자인패턴은 굉장히 오래된 책입니다.
    한국어로 번역된 초판이 무려 2005년에 나왔으니까 한국어로 번역된 책이 나온지도 20년이 넘은셈이죠.
     
    이 책은 일반적인 개발 서적과 조금 다릅니다. 
    코드만 나오는 것도 아니고, 그렇다고 줄글로만 주구장창 쓰여져 있지도 않지요. 
    이 때문에 책을 읽으면서 여행하는 느낌이 나기도 합니다.
     
    책에는 총 16가지의 패턴을 다루게 됩니다.
    물론 여러 패턴들 얘기하기 전에 예제를 통해 전체적인 패턴을 사용하는 방식에 대해 얘기합니다.
     
    옵저버, 데코레이터, 팩토리, 싱글턴, 커맨드, 어댑터, 퍼사드, 템플랫 메소드, 반복자, 컴포지트, 상태, 프록시 등의 패턴을 얘기해봅니다.
    물론 이 모든 패턴에 대해 익숙해지면 좋겠지만 모든 것이 그렇듯 필요할 때 적재 적소에 쓰는 것이 중요합니다.
     
    중요도에 따라 더 많이 쓰이는 패턴이 있기도 하고 상대적으로 덜 사용되는 패턴도 있지요.
    저는 오히려 이 책에서 얘기하는 내용 중에는 패턴도 중요하지만 유연하게 개발하는 것에 대해 생각할 수 있도록 얘기하는 것도 정말 중요하다고 생각합니다.
     
    - 디자인 패턴은 만병통치약이 아닙니다.
    - 패턴이 정말 필요한가?
    - 무조건 패턴을 적용해야 하는가?
     
    등의 질문을 통해 패턴을 적용하는 것에 대해 생각해보게 되는 것.
    이 패턴이 정말 필요한 것인가? 같은 생각들을 하는 것을 통해 점점 더 나은 개발을 해야 하는 것이죠.
     
    디자인패턴이라는 것은 선배 개발자들의 경험과 노하우를 녹인 일종의 전래동화 같은 것이라고 생각합니다.
    그러한 이유로 경험을 공부하고 학습하면서 왜 이런 패턴이 나오게 되었는지 확인하고 그 상황이 되었을 때 내가 더 자연스럽게 비슷한 형태의 패턴을 사용한다면 디자인 패턴에 대해 제대로된 학습을 했다고 생각이 들 것 같습니다.
     
    무턱대고 디자인 패턴이 좋으니까 적용하자! 또는 사용할 곳이 명확하지도 않은데 이걸 사용해야 해! 같은 것은 하지 않았으면 하는 바램입니다.
     
    이 리뷰 내용은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
    책의 내용이 궁금하다면 [이곳]을 통해 확인할 수 있습니다.
     

  • 안녕하세요 도미닉입니다.

    오늘은 헤드퍼스트 디자인패턴을 읽고 느낀점을 공유하고자 합니다.

    저는 헤드퍼스트 디자인패턴 책을 기존에 나왔던 책으로 읽어본 경험이 있었습니다.

    이전에 책도 설명이 굉장히 잘되있고 소설책을 읽는 것처럼 책의 내용을 따라가다 보면 디자인 패턴을 이해할 수 있는 점이 인상적이었습니다.

    이 책은 이전의 헤드퍼스트 디자인패턴 책에서 조금 조잡할 수 있었고 난해할 수 있었던 내용들이 개선되었습니다.

    우선 책의 가독성이 많이 좋아졌습니다.

    개정판 이전의 책은 글자의 위치가 페이지마다 제각각이고 글씨의 폰트도 다양해서 조금 난잡하다는 생각이 들었습니다.

    이번 개정판은 글씨의 폰트도 일정한 편이고 글자들이 있어야할 것으로 예상되는 곳에 글자가 있어서 훨씬 읽기 좋아졌습니다.

    이렇게 하면 책이 획일화되면서 기존의 읽기 재밌었던 장점이 없어진 것이 아닐까 생각하실 분들도 계실 것 같습니다.

    코드 예제라던지 내용들은 기존의 뼈대를 유지하고 있어서 책을 읽는 것은 여전히 재밌었고 흥미로웠습니다.

    이 책을 읽다보면 소설을 읽는 것처럼 자연스럽게 하나씩 디자인패턴에 대해서 이해할 수 있습니다.

    이런 점은 다른 책들과의 차별점이라고 생각합니다.

    보통 디자인 패턴은 완벽히 똑같이 만들 수 있는 구조라고 생각을 합니다.

    하지만 이 책에서도 적혀있듯이 디자인 패턴은 코드보다는 경험을 재사용하는 것입니다.

    이런 이유로 선배 개발자들은 어려움을 느꼈고 그래서 이러한 경험을 통해서 이런 구조를 만들었다라는 것을 이 책을 통해 알 수 있었습니다.

    또한 디자인 패턴을 처음 공부할 때는 무조건 외워야하는, 어렵게 생각하는 분들이 많이 있습니다.

    그런 분들도 이 책을 읽다보면 소설을 읽듯이 주인공에게 몰입하여서 함께 희노애락을 겪으며 디자인 패턴을 공부할 수 있는 좋은 책입니다.

    이 책을 통해 디자인 패턴을 익혀보면 어떨까요?

     

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."



    출처: https://kiljh.tistory.com/251 [Dominic Blog]

  • 디자인 패턴... 그래, 그거.

    객체지향 프로그래밍의 여러 문제 유형들을 해결하기 위한

    모범 답안 같은 그것.

     

    지금까지 디자인 패턴,

    어디까지 읽어봤니?

     

     

    헤드퍼스트디자인패턴.jpg

     

    헤드 퍼스트는 지금까지의

    어떤 디자인 패턴 책과 비교할 수 없는 듯 하다.

    강추한다...!!!

     

    진정 디자인을 위한 생각을 하도록 이끌어준다.

    쉽게 정답만 보고 넘어가려고 하면

    어떻게 알고 왔는지... 옆에 파란색 글씨를 적어놨다. ㅋ

    "정말 꼭 풀어보고 가세요."

    "정말 꼭 생각해보고 가세요."

    알겠다. 오바.

     

     

    디자인 패턴을 쓰게 되지만...

    그 이면에 어떤 배경이 있는지

    어떻게 생각해 나가야 하는지...

    어떻게 고쳐가야 하는지...

    진지하게 접근한다는 느낌을 받는다.

     

     

     

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

     

     

  • 개발 공부 중에서 개발 입문자에게는 디자인 패턴 공부가 가장 추상적으로 와닿는 부분이라고 생각한다. 제대로 파고 들겠다며 각 잡고 공부하더라도, 학습하고 나서 활용하지 않으면 쉽게 잊어버리기 마련이다. 이 책은 딱, 그런 독자들을 위한 책이라고 할 수 있다.

     

    책에서 다루는 디자인 패턴

    중점적으로 다루고 있는 디자인 패턴

    옵저버, 데코레이터, 팩토리, 싱글턴, 커맨드, 어댑터, 퍼사드, 템플릿 메소드, 반복자, 컴포지트, 상태, 프록시

     

    간략하게 언급만 하는 패턴

    브릿지, 빌더, 책임 연쇄, 플라이웨이트, 인터프리터, 중재자, 메멘토, 프로토타입, 비지터

     

     

    추천 독자

    디자인 패턴과 그를 기반으로 하는 객체지향 디자인을 배우고 싶은 사람

     

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

  • 01.jpg

     

    02.jpg

     

    재사용성으로 대표되는 잘 설계된 객체지향 구조는 패턴으로 가득 차 있습니다. 여러 개발자가 협업하여 시스템을 개발할 때는 물론이고 혼자서 개발한다 하더라도, 객체 사이의 협력 방법에 얼마나 주의를 기울였는지가 객체지향 시스템의 품질을 좌우하게 되기도 합니다. 복잡한 개발 과정에서 우리 선배 개발자들은 같은 실수를 반복하지 않기 위해 노력해 왔습니다. 즉, 자신들의 시행착오를 바탕으로 특정 상황에서 발생하는 문제 패턴을 정의하고 또한 효과적으로 해결하는 방안을 기록으로 남겼습니다. 이를 '디자인 패턴'이라고 부릅니다.

    누군가 겪은 문제가 누군가'만' 겪는 문제는 아닙니다. 그러므로, 디자인 패턴에 대한 이해는 동일한 문제를 해결했던 경험을 활용하여 소프트웨어 설계의 효율을 추구할 수 있게 해 줍니다. 코드의 재사용으로 대표되는 라이브러리나 프레임워크의 사용이 개발과정의 속도를 혁신적으로 개선해 주었다면, 디자인 패턴의 사용은 소프트웨어의 설계와 유지 관리를 더 쉽고 유연하게 진행할 수 있도록 도와줍니다.

    즉, 디자인 패턴에 대한 학습을 통해, 같은 실수를 반복하지 않고, 효율적인 소프트웨어 설계를 가능하게 하며, 장황한 설명을 하지 않고도 '싱글턴 패턴을 쓰자'와 같이 한 문장으로 동료 개발자와의 의사소통이 가능하게 됩니다.

    디자인 패턴은 1987년에 발표된 논문에서 처음으로 제안된 개념이라고 합니다. 이후 1995년에 GoF(Gang of Four)로 불리는 4인방 - 에릭 감마, 리처드 헬름, 랄프 존슨, 존 블리시디스 - 이 "Design Patterns - Elements of Reusable Object-Oriented Software" 를 출간하여 구체화 하였습니다.

    우연하게도 역시 4명의 공저자가 지은, 이 책 "헤드 퍼스트 디자인 패턴(Head First Design Patterns)"은 2004년에 초판이 출간되었고 2005년에 한국어 번역 초판이 한빛미디어를 통해 국내에 소개되었습니다. 이후 2021년, 16년만에 개정되었고, 개정을 기념하여 한국에는 한국 독자들만을 위한 특별판으로 구성되어 출간되었다고 합니다.

     

    03.jpg

     

    헤드 퍼스트 시리즈의 독특한 특징이죠. 마치 여러 사람들과 대화하듯이 설명하는 페이지가 많은데, 원서를 보지 않아 정확하지는 않습니다만, 원서에는 아마도 미국인 사진이 사용되었을 것 같습니다. 하지만, 이번 한국 특별 개정판에는 동양인 일러스트로 대체되어 있는 것 같습니다. 개인적으로 시선이 더 편안하고 이질감이 덜 느껴져서 독서가 더 편안해 진 것 같습니다.

     

    04.jpg

     

    디자인 패턴을 설명하기 위해 사용한 샘플 예제에는 자바가 사용되었습니다. 화살표 지시선을 사용하여 코드 한줄 한줄 상세하게 설명해 줍니다. 다만, 회색과 연한 하늘색의 배합이라 선명하지 않은 듯 해서 살짝 눈에 피로감이 있네요. 그리고, 색맹인 분들에게 잘 보이는지도 조금은 염려가 됩니다.

     

    05.jpg

     

    UML처럼 보이지만 엄격한 의미의 UML은 아니고 UML을 적당히 고친 다이어그램을 사용하여 객체 설계를 설명하는 것도 좋은 것 같습니다. 사실 UML이 복잡한 면도 있는데 단순화한 설명이라 이해하기 더 쉬운 것 같네요.

    다만, 이 책은 클래스를 다형적으로 사용하는 방법, 계약에 따른 디자인과 상속의 유사성, 캡슐화 작동 방법과 같은 뜻 모를 객체지향의 기초 지식을 이미 갖추고 있는 독자들을 대상으로 합니다. 자바를 완전히 꿰고 있지는 않아도 되지만 객체지향의 기본 개념과 원칙에 대해서 어느정도 기본 지식이 필요합니다.

     

    06.jpg

     

    원조 Gof가 23가지 디자인 패턴을 정리했다면(위), 헤드 퍼스트 4인방은 이 중 가장 많이 사용되는 14가지 디자인 패턴에 대하여 설명하고 있습니다. 또한 그 설명을 위해 디자인의 근간이 되는 9가지 디자인 원칙을 적절히 사용하고 있습니다(아래).

     

    07.PNG

     

    08.PNG

     

    원조 디자인 패턴보다는 당연히 '헤드 퍼스트 디자인 패턴'의 설명이 더 가깝게 느껴지는 건 저만은 아닐겁니다.

    편집의 단점인지 장점인지 모르겠습니다. 여러 '헤드 퍼스트' 시리즈들을 읽다 보면 ... 종종 뭔소리를 하고 있는지 조금은 산만하게 느껴지기도 하는 '헤드 퍼스트' 시리즈이기는 합니다. 하지만, 하나의 패턴을 설명하기 위해 한 챕터를 하나의 개발과정 이야기로 구성한 '헤드 퍼스트 디자인 패턴'과 대화하다 보면, 복잡하게만 여겨지던 객체지향 디자인 패턴들이 조금씩 손에 잡힘을 느끼게 해 줍니다.

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

     

  • 개발자라면 누구나 한번쯤은 들어봤을 법한 아주 유명한 책입니다.

    초판이 나온지 무려 17년이나 된 책입니다. 탁월한 통찰력과 전문성으로 디자인 패턴이라는 개념을 만들어 내고

    널리 전파하여 소프트웨어 설계 분야를 송투리째 바꿔 놓고 전 세계 개발자의 삶을 좋은 방향으로 바꿔준 그야 말로 레전드인 책입니다.

    디자인 패턴을 활용하면 단지 코드만 "재사용"하는 것이 아닌, 더 큰 그림을 그리기 위한 디자인도 재사용할 수 있습니다.

    디자인 패턴은 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인 문제를 정리해서 상황에 따라 간편하게 적용 할 수 있게 정리한 것입니다. 

    잘 활용 할 수 만 있다면 적지 않은 시간과 노력, 시행 착오를 줄일 수 있습니다.

    더 이상의 설명이 뭐가 필요하겠습니까. 

     

    ​이 책에는 그림이 많이 있습니다. 사적인 대화하듯 설명을 곁들이며 대화체를 사용합니다. 

    더 집중하며 책을 볼 수 있을것 같습니다. 또한 90개 이상의 연습문제가 있습니다. 

    읽을 때보다 실제로 어떤 일을 할때 더 잘 배우고 더 잘 기억하기 때문입니다. 

    그리고 여러 가지 학습 유형을 섞어서 사용하였습니다. 

    단계별로 공부하는 쪽을 선호 할 수 있도 큰 그림을 파악하는 쪽을 선호하는 독자도 있고 예제만 보면 된다는 독자도 있기 때문입니다. 

     

    - 마치며 -

     

    이책에는 14가지의 패턴을 일상에서 발생하는 상황등을 이용하여 설명하고 있습니다. 

    기본적인 상황 설명을 하고 클래스와 객체를 만들고 설명하고 다이어 그램을 그리는 방식으로 진행하며 객체지향 프로그래밍 원칙들에 대해서 설명합니다.

     

    90여개의 연습문제를 통해 실제 코딩해보고 이해를 해 볼 수 있습니다. 

    디자인 패턴은 만능이 아닙니다. 모든 도구는 용도에 맞게, 적절하게 쓰일 때 큰 위력을 발휘합니다. 

    주어진 상황에 맞게 디자인 패턴을 잘 활용한다면 정말 강력한 도구가 될것입니다.

     

    이번 개정판을 통해 자바 초급자나 디자인 패턴을 알고는 있지만 정확히 이해하고 활용 할 없었던 분들에게 무조건 추천합니다!

  • "한빛미디어 <나는 리뷰어다>활동을 위해서 책을 제공받아 작성된 서평입니다."

     

    IMG_2348 중간.png

     

     

     

     

    우선 이 책은 초급 개발자들에게 추천할 만한 책이고 중급 이상의 개발자 들도 한번 쯤 읽어봐도 좋을 듯하다.

    헤드퍼스트 시리즈는 굉장히 설명을 잘하는 책이라고 생각된다.

     

    이 책이 초급 개발자들에게 좋다고 생각하는 이유 중 하나는 설명하는 방식에 있다.

    많은 도서들은 대부분 있는 기술이나 정의를 설명하는데 많은 초점을 둔다.

     

    하지만 헤드퍼스트는 대화형으로 설명하는 부분이 있는데 왜 이런 기술과 정의를 사용해야 하는지에 대해 의문을 던지고 설명을 한다.

    물론 이러한 설명이 모든 질문과 설명을 포함하고 있지는 않지만 적어도 초급 개발자가 접근하는 수준에서는 충분한 설명을 하고 있다.

    IMG_2351 중간.png

     

     

    또한 중간중간에 있는 생각해 보기와 퀴즈 등을 하나씩 따라가면서 부담 없이 디자인 패턴을 익혀 나갈 있을 거라 생각된다.

     

    IMG_2350 중간.png

     

    옵저버패턴, 데코레이터패턴, 팩토리패턴, 싱글턴패턴 등 다양한 디자인 패턴을 잘 설명하고 있으니

    기존에 구현되어 있는 코드의 디자인 패턴 들을 확인해 보면서 다시 한번 고민해 보는 것도 많은 도움이 될듯하다.

     

  •  
    객체지향, 함수형, 선언형, 반응형 등의 갖가지 프로그래밍 방법론이 프로그래밍 세계를 뒤덮으며 활발하게 사용되고 있는 2022년...
    오.. 이럴수가.. 지금과 같은 혼돈기가 아니었던 것으로 생각되는, 2000년대에 읽었던 디자인패턴 도서의 개정판이 나와버렸다. 
    예전의 병맛 낙서스러운 일러스트들이 정상적인 느낌으로 바뀐 점이 아쉽지만, 아무튼 깔끔하게 정리된 컬러판으로 출간되었다. 'ㅅ')
     
    오랜 시간 개발을 해오면서도 다시금 자신을 돌아보게 만드는 격언들이 즐비한 아름다운 이 도서. 다시 읽어보아도 배울 점이 태산이다. 
    기본적으로 널리 알려진 디자인 패턴들에 관해 Java 코드를 통해 쉽게 설명하며, 프로그래밍 디자인 원칙들을 함께 곁들인다. 
    예를 들어 아래와 같이...
     
    애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다.
    구현보다는 인터페이스에 맞춰서 프로그래밍한다.
    상속보다는 구성(composition)을 활용한다.
    상호작용하는 객체 사이에는 가능하면 느슨한 결합을 사용해야 한다.
    등등...
     
    출간 당시에는 초보자가 읽을만한 디자인 패턴 관련 서적이 크게 많지 않았던 것으로 기억하는데, 
    현재는 각 언어의 특성에 맞춘 패턴 관련 서적이 상당수 출시된 상태이기에 이 도서가 현재도 경쟁력이 있느냐 생각하면... 경쟁력이 있다. 'ㅅ')
    적당히 복잡한 문제와 그를 해결하기 위한 코드 및 자세한 설명으로, 패턴 리뷰/스터디를 하기에 전혀 모자랄 것이 없는 알찬 도서이다. 
    전부 다시 읽기에는 시간이 걸리는 볼륨이나, 리뷰하는 내내 좀 더 읽고 싶은 마음이 드는 추억의 도서였다. 'ㅅ')b
     
    .
     
    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
     

  • 16여 년 만의 개정을 기념해 재탄생한 한국 특별판???

    에릭 프리먼, 엘리자베스 롭슨, 케이시 시에라, 버트 베이츠 지음

    서환수 옮김

     

    한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

     

    2022년 4월

    2022 나는 리뷰어다 활동의 세 번째 리뷰

     

    4월의 리뷰할 책은 "헤드퍼스트 디자인 패턴(개정판)"이다.

    무려 16년 만에 개정판이 나왔다. 개정판이라고 할 수 있을지는 모르겠으나 아무튼 한국 특별판이다.

     

    몇 페이지를 휘리릭 봤을 때 느낀 점은 예전 본판보다 보기가 훠어~~ 얼씬 편해졌다.

    헤드퍼스트 디자인 패턴이라는 책이 워낙에 좋은 책으로 소문이 많이 났었기 때문에 꼭 봐야지 봐야지 했는데 뭔가 미쿡스런 책의 그림과 구성에 지쳐버리고 말았다. (공부 열심히 하지 않아서 그런 건 아니랍니다...)

    어디를 어떻게 봐야 하는 거지? 라는 생각을 많이 했던 것 같다.

    책의 일부분을 보여드립니다...

    나는 정말 정신 없었다...

     

    그런데!

    개정판이 나왔다.

    구성이 정말 깔끔하게 잘 나왔다.

     

    훨씬 보기 편하고 텍스트 색감도 너무 좋다. 

    이것 보세요 여러분!!!!

    정말 잘 나왔다! 당장 읽어 보고 싶을 정도로 좋은 구성이다.

    옮긴이의 말처럼 한국 정서에 맞게 일러스트레이션도 싹 바뀌고 뼈대와 태가 바뀌었다.

    어디에 감사를 드려야 하나 ㅎㅎㅎ

    일단 한빛미디어에 감사드립니다!!

    (늘 감사하고 있어요!!)

     

    그럼 이제 책의 본문에 집중해보자.

    헤드퍼스트 디자인패턴은 친절하게도 책을 보는 방법을 잘 설명해준다.

    여러분의 두뇌를 정복하는 방법

    1. 천천히 하세요.

    2. 연습문제를 꼭 풀어보세요.

    3. <무엇이든 물어보세요> 부분은 꼭 읽어보세요.

    4. 자기 전 마지막으로 이 책을 보세요.

    5. 물을 많이 마십시다.(????)

    6. 배운 내용을 얘기해 봅시다.

    7. 두뇌의 반응에 귀를 기울여 봅시다.(힘들면 쉬라는 뜻)

    8. 뭔가를 느껴 봅시다.

    9. 직접 디자인해 봅시다.

     

    진짜 이대로만 하면 개발 실력이 쑥쑥 성장할 수 있을 것 같다.

    이 책뿐만 아니라 다른 책들도 이런 식으로 공부한다면 내 머릿속에 잘 남으리라.

     

    어쨌든,

    이 책은 디자인 패턴을 말하는 책이다.

    디자인 패턴을 잘 활용하면 코드 재사용뿐만 아니라 더 확장될 앱을 준비할 수가 있다.

    괜히 패턴이라는 단어를 사용하는 것이 아니다. 선배 개발자 분들이 시행착오를 많이 겪은 후에 가장 효율적이라고 생각하는 것을 패턴으로 남겼을 테니 말이다.

    지속적으로 공부하고 접목시켜 보다 보면 디자인 패턴을 가장 현명하게 활용하는 법을 깨달을 수 있을 것이다.

     

    이 책은 우선 초급 개발자에게 가장 도움이 될 책이라고 생각이 된다.

    물론 요즘 시대에 초급 / 중급으로 굳이 구분하고 싶지는 않지만 언어를 공부하고 프레임워크를 다뤄보기 시작한 개발자가 디자인 패턴을 공부하면 가장 도움이 될 것 같기 때문이다.

    본인이 생각하기에 자바와 객체지향을 지속적으로 사용해야 한다면 이 책은 필수라고 생각한다.

     

    디자인패턴을 이야기하자면 보통 GoF의 디자인 패턴을 많이 이야기한다.

    하지만 GoF의 책은 난이도가 좀 있는 편이기 때문에 이 책으로 먼저 시작하고 디자인 패턴에 대해서 더 궁금하다면 GoF로 넘어가는 것도 좋은 방법일 것 같다. 패턴도 패턴이지만 객체를 설계하는 법에 대해 설명을 잘해주는 책이기 때문에 강추하는 책이다.

     

    마지막으로, 개정판이라고 해서 내용은 크게 바뀌진 않았다.

    일단 예제 코드가 최신 자바버전인 자바 16에 대응 가능하도록 변경이 된 것 제외하고는 내용에서 큰 변화는 없는 것으로 보인다.

     

    디자인 패턴을 재미있게, 그리고 효과적으로 공부하고 싶은 분들은 헤드퍼스트 디자인패턴으로 시작하자.

    괜히 16년 만에 개정판이 나온 것이 아니다. 그것도 한국 특별판으로.

     

    Love Yourself.

  • "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
    헤드퍼스트 디자인패턴 개정판

    한빛미디어의 "헤드퍼스트 디자인패턴 개정판"을 리뷰하게 되었습니다.

     

     

    헤드 퍼스트 디자인 패턴(개정판)

    유지관리가 편리한 객체지향 소프트웨어 만들기! “『헤드 퍼스트 디자인 패턴(개정판)』 한 권이면 충분합니다!”

    m.hanbit.co.kr

     

    디자인 패턴

    패턴은 특정 컨텍스트 내에서 주어진 문제의 해결책이다.
    어떤 컨텍스트 내에서 일련의 제약조건에 의해 영향을 받는 문제가 발생했다면,
    그 제약조건 내에서 목적 달성을 위한 해결책이 되는 디자인을 적용하면 된다.

    책에서는 디자인 패턴에 대해 위와 같이 설명하고 있습니다. 디자인 패턴의 구조는 패턴이 적용되는 상황을 가리키는 컨텍스트, 컨텍스트의 목표 또는 제약조건을 뜻하는 문제, 그리고 해결책으로 나눌 수 있습니다.

     

    디자인 패턴은 개발자로서 꼭 알아야 하는 개념이라고 생각합니다. 여러 개발자의 코드를 디자인 패턴을 통해 통일화하여 의도를 파악하기 쉽게 할 수 있고, 코드의 재사용성을 늘릴 수 있으며 하나의 의사소통 수단으로도 사용할 수 있습니다.

     

    책 소개

    이 책에서는 이런 중요한 개념인 디자인 패턴을 굉장히 쉽고 재밌게 배울 수 있도록 구성한 것이 보입니다.

    책은 14가지의 챕터로 나뉘어 있으며 각각 오리지널 GoF의 디자인 패턴 중 핵심 패턴에 대해서 설명하고 있습니다.

     

    1. 그림으로 설명

    책의 대부분의 설명은 그림으로 그려져 있습니다.

    어려운 개념이다보니 글과 코드만 봐서는 이해가 잘 안 갈 수 있는데, 그림으로 보니 보다 쉽게 이해가 되는 것이 좋았습니다.

     

    2. 예제와 Q&A

     

    그림만으로는 어떻게 적용해야 하는지 감이 안 잡히는 게 당연합니다.

    때문에 자바 코드로 이루어진 예제 또한 제공하며 대화체를 사용하여 책 또는 저자와 대화하여 배우는 듯한 느낌을 줍니다.

    그리고 Q&A가 있으며 책의 핵심 내용을 한 번 더 짚고 넘어가도록 구성되어 있습니다.

     

    3. 다양한 연습문제

    책에는 다양한 양식의 연습문제가 있습니다.

    십자말풀이, 깊게 생각하고 답을 구해야 하는 뇌 운동, 코드 테스트 등 단순히 형식적인 객관식 문제가 아니라 재미도 있고 스스로 제대로 공부가 되었는지, 이해는 했는지 물어보는 것 같아서 좋은 경험이었습니다.

     

    마무리

    괜히 여러 개발자 선배 분들이 추천하는 책이 아니다라는 생각이 들 정도로 좋은 책이었습니다.

    저는 책이 두꺼우면 이걸 언제 다 읽을까라는 생각이 드는 데, 이 책은 쉽게 읽히는 데다가 재미까지 있으니 두꺼워서 오히려 좋아라는 느낌이었습니다.

     

    어느 정도 프로그래밍 언어를 이용해 간단한 무언가를 만들 수 있다면 그다음 단계로 넘어가기 위해 꼭 읽어야 하는 책이며, 제 주변인들에게도 꼭 추천하고 싶은 책입니다.

  •  

    헤드1.jpg

     

    헤드2.jpg

     

    더 좋은 코드를 만들기 위해 고민하는 모든 분들께 강력히 추천합니다.

     

    처음으로 헤드퍼스트 책을 읽게 되었습니다.

    그림이 많고 중요한 일부 내용들을 쉽게 풀어쓴 초보자를 위한 책으로 알고 있었는데, 주니어와 시니어 모두가 읽기 좋은 기본에 충실한 개념서였습니다.

     

    디자인 패턴을 어떤 경우에 어떻게 사용해야 하며 어떤 효과가 있는지, 상당히 실용적이고 친절하게 설명하고 있습니다.

    지루하고 이해하기 어려울 수 있는 디자인 패턴들을 실제 프로젝트에서 겪을 수 있는 상황들을 예로 들어, 쉽게 공감하고 이해할 수 있었습니다.

     

    다양한 디자인 패턴들을 알고 있는 건 좋지만, 모든 걸 디자인 패턴으로 해결하려고 하는건 조심해야 한다고 생각합니다.

    이 책에서는 중요한 개발 원칙들을 기반으로, 상황에 따라 유연하게 디자인 패턴을 적용하는 사고를 할 수 있는 길러줍니다.

     

    개발을 하는 모든 분들이 곁에 두고 반복적으로 보시면 좋을 것 같습니다.

     

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

  • 2005년 9월 초판이 나왔던 책의 새로운 버전을 지난달에 재번역 발간한 책입니다.

    저는 이 책의 예전 판을 읽었었는데요. 2010년 10월이었습니다. 당시 책을 읽고 "Head First 시리즈를 안 좋아했는데, 괜찮다는 느낌이 온다"라고 메모해 두었네요. 당시만 해도 GoF의 "디자인 패턴"을 읽고, 이해되지 않는 부분들이 있어서 고민하던 중이었거든요. 그런데 이 책을 읽고 이해도를 꽤 높일 수 있었습니다.

    예전판의 번역자는 "서환수"님이셨는데요. 이번 판도 "서환수"님이 번역하셨더군요. 17여 년 만에 같은 책을 번역하신 셈인데요. 책 내용을 보다 보면 정말 재미있는 부분들이 있습니다. 과거 서완수 님의 번역 문체와 현재 서완수 님의 번역 문체가 미묘하게 바뀐 건데요. 예를 들어서 예전판에, "전문 용어는 신참 개발자들에게 훌륭한 자극제가 됩니다"라고 번역되어 있는 부분이 이번에는 "전문 용어는 신입 개발자에게 훌륭한 자극제가 됩니다" (64페이지)로 번역되었더군요. 모르기는 몰라도, 과거 번역 결과를 그대로 가져오기 보다 새로운 판의 번역을 따로 하신 게 아닌가 싶었습니다.

    원전의 내용도 꽤 많이 바뀐 것 같았는데요. 전체적인 구조나 각 장이 설명하는 뼈대는 그대로 둔 채로, 설명하는 방식을 바꾸기도 하고, 자바 기술 변화에 맞춰서 내용을 수정/추가한 것을 볼 수 있었습니다. 예를 들어, 예제에 자바 클로저를 사용하는 코드가 추가된 부분이나 내장 옵서버 객체가 사라지는 바람에 이 부분을 사용하는 방법을 보여주는 대신 Observer가 사라졌다고 언급하는 부분이 보이더군요.

    2010년에 읽을 때도 그렇게 생각했지만, <헤드 퍼스트 디자인 패턴>은 디자인 패턴을 공부하면서 이해해야 할 "용어"가 모두 등장하고 있습니다. 얼마 전 저는 "데미테르 법칙"에 대해서 글을 쓸 기회가 있었는데요. 데미테르 법칙은 "최소 지식 원칙"이라고 <헤드 퍼스트 디자인 패턴>에서 설명하고 있거든요.

    "할리우드 원칙" 같은 용어도 다른 책에서 잘 언급하지 않지만 디자인 패턴 이해를 위해 꽤 중요한 용어이고요. 그래서, "디자인 패턴"을 공부하고 있는 개발자라면 <헤드퍼스트 디자인 패턴>으로 도움을 많이 받으실 수 있을 것 같습니다.

    다만, 책의 예제가 모두 자바를 사용하고 있기 때문에 다른 언어를 사용하는 개발자라면, 조금 낯설다는 느낌을 받겠더군요. 설명하는 내용들이 객체지향언어 특히 자바를 사용하는 디자인 패턴에 대한 내용이기 때문인데요. 디자인 패턴은 결국 특정 언어 패러다임과 프로그램언어를 목표로 설명하게 되지만 디자인 패턴이 필요한 이유는 객체지향이나 자바를 위해서가 아니기 때문에, 다른 언어를 사용하는 사용자라도 이 책에서 얻을 게 없다고는 말할 수 없을 것 같습니다. 저 같은 경우도 자바를 현업에서 사용한 적이 없지만, 디자인 패턴이나 예전 버전 리팩토링 책을 읽으면서 많은 걸 느낄 수 있었거든요. 아마도 "왜" 이런 패턴이 필요하게 되었는지에 대한 이해는 결국 언어에 의존적이지 않기 때문이 아닐까 싶습니다.

    책의 말미, 615쪽에 보면

    " 시스템이 점점 복잡해지면서 처음에 기대했던 유연성이 전혀 발휘되지 못한다면 패턴을 과감하게 버리는 게 낫습니다. 즉 패턴보다 간단한 해결책이 더 나을 것 같다 싶을 때 패턴을 제거하면 됩니다"라고 언급하고 있는데요. 이런 마무리가 결국 "디자인 패턴"을 제대로 설명하기 위한 마무리가 아닐까 싶습니다.

    근본적으로 디자인 패턴을 사용하는 것이 "유연성" 때문이라는 생각인 건데요. 그렇다면 프로그래밍 언어가 무엇이 되었던, 어떤 패러다임이 되었던 비슷한 고민과 해결책이 필요하게 되고, 디자인 패턴으로 정리될 수 있게 되는 거죠. 그럼, 아마도 <헤드퍼스트 디자인 패턴>에서 이야기하고 있는 디자인 패턴 용어들을 가져다 쓰게 될 것이고요.

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

  • 프로젝트를 진행하다가 이전 코드를 수정하려고 보면 알 수 없는 구조에 수정이 힘들 때가 많았다.

    그래서 결국 프로젝트를 리팩토리 하는데 많은 시간을 보내곤 했다.

    그럴 때마다 디자인 패턴을 공부해서 코드에 적용해 보고 싶다는 생각을 종종 했다.  

    이 책은 자칫 지루할 수 있는 개념들을 재미있게 대화체로 풀어냈다.

    그래서 포기하지 않고 마지막까지 읽을 수 있었다.

    디자인 패턴의 근간이 되는 9가지 디자인 원칙(캡슐화, 구성 우선, OCP 등)부터 실전에서 많이 사용하는 14가지 디자인 패턴(전략, 데코레이터, 싱글턴 패턴 등)까지 한 책으로 개념을 한 번에 확인할 수 있어서 좋았다.

    또한 디자인 패턴 같은 경우 개념을 이해하더라도 디자인 패턴을 코드에 녹여내는 것이 힘든데, 자세한 예제 코드를 통해 디자인 패턴을 적용하는 법까지 나와있어 수월하게 공부할 수 있었다.

    앞에서 설명한 개념을 연습 문제를 통해 제대로 익혔는지 확인할 수 있다.

    책 내용이 재밌게 풀어져 있어 개념서의 역할을 제대로 못하면 어떡하지 싶었지만, 자세한 코드 리뷰와 연습 문제를 통해 재미와 자세한 설명 두 마리의 토끼를 잡은 책이다.

    디자인 패턴을 처음 공부하는 분에게 추천하고 싶다.

     

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

  • 

    > 책을 읽기 전, 나의 상황

     

     

    여러 프로젝트를 진행하면서, 기획의 필요성과 중요성을 절실히 느꼈다.

    특히 이번에 소프트웨어 분석 및 설계라는 과목을 수강하면서 UML이 얼마나 코딩에 도움이 되는지,

    코딩은 실제 프로젝트에 있어서 작은 한 부분일 뿐이라는 것을 깨달았다.

     

    나는 지금 무턱대고 코딩하지 않는 법을 배우는 중이다.

     

    이 책은 개발자로 활동하고 계시는 분들이 추천하는 책이기도 한 것 같았다.

    부담스럽지 않게 흥미를 돋우며 읽을 수 있는 책인 것 같아서 마음에 들었다.

     


    > 리뷰

    초보자도 전문가도 읽기 좋은 책

    이 책은 실력 차이와 무관하게 디자인패턴을 공부하고 싶다면 무난하게 읽을 수 있다.

    왜냐하면 UML에 대한 지식이 없고 프로그래밍을 잘 몰라도, 풍부한 그림들과 쉬운 설명들이 이 책을 이해하는데 어려움이 없도록 도와주기 때문이다.

     

    컴퓨터공학과에서 수업을 들어보니, 로드맵이라는 것이 존재했고, 학생들이 이 로드맵에서 벗어나려고 하지 않는다. 단계별 학습이라는 것이 분명히 존재하고 따라가면 좋은 점도 있을 것이다.

    하지만 소프트웨어를 분석하고 문제에 대해 정확히 탐구하는 과정은 어느 단계에 있든 배워두면 좋다고 생각한다.

     

    이 책은 친절하게  디자인 패턴 이외의 기본 지식은 그림으로 이해를 도와 준다.

     

    이와 같이 조금이라도 프로그래밍을 공부한 사람이라면 이해하기 쉬운 단순한 코드일지라도,

    이를 모르는 사람이 '책에서 강조하는 개념을 이해하는데 방해받지 않도록' 도와준다.

    지루할 틈이 없는 구성, 흥미유지에 최적화된 책

    책 두께에 조금 당황했었던 것이 사실이다.

    하지만 책을 조금 둘러보니 이해가 갔다.

     

    이 책의 구성은 정말 지루할 틈이 없다. 각종 그림과 인터뷰로 궁금증을 덜어가면서도 재미있게 공부를 지속할 수 있다.  자기조절학습의 필수요소인 흥미유지는 이 책이 알아서 책임진다.

     

     

    > 공부를 끝낸 뒤

     

    이 책은 두고두고 계속 읽어보고 싶다.

    내 코드가 유지보수에 탁월해질 수 있도록...

    

     

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

     

     

    출처: https://blog.naver.com/sonrisa-bonita/222709715751

  • "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

    디자인 패턴의 중요성

    유능한 개발자가 되는 길은 멀고도 험난한 것 같다. 뭐가 되었든지 간에 그 어렵다던 프로그래밍 언어에 간신히 익숙해지고 나니 자료 구조와 알고리즘이라는 험난한 벽에 가로막혀 한참을 헤매야한다. 이 벽을 돌파해 취업에 성공한다면, 본격적으로 수많은 개발자와 소통하고 대규모 프로젝트에 일원으로 포함되기 위해 또 다른 벽을 마주하게 된다. 특히 이번에 마주하는 벽들은 대게 모호해 보이는 해결책이나, 복잡해 보이는 도식으로 인해 도전하기가 쉽지 않아 보인다. 수많은 사람들과 협력하고, 거대한 프로젝트를 효율적으로 개발하기 위해 필요한 기술이 무엇일까? 물론 소프트웨어 엔지니어링에서 파생된 수많은 패러다임이 있지만 협업을 위해 알아두어야 하는 부분은 바로 디자인 패턴이다. 

    소프트웨어 디자인 패턴은 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는 데에 쓰이는 서술이나 템플릿이다. 디자인 패턴은 프로그래머가 애플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는 데에 쓰이는 형식화된 가장 좋은 관행이다.
    위키백과 - 소프트웨어 디자인 패턴

    디자인 패턴이 소프트웨어 개발에 있어서 왜 중요한지는 위키백과의 설명에서 찾아볼 수 있다. 우선 첫번째로 나오는 것은 '재사용 가능한 해결책'이라는 데에 있다. 개발 과정에 있어서 개발자들은 수많은 문제 상황을 마주하게 된다. 그때마다 머리를 쥐어 짜내어 새로운 해결책을 찾아가는 것은 시간적으로 매우 비효율 적이다. 다행스럽게도 우리 앞에는 수 많은 선배 개발자들이 있고, 그들은 오랜 시간 동안 수많은 문제들을 추상화하여 패턴화 시켜 놓았고 그에 맞는 소프트웨어 디자인까지 만들어 놓았다. 우리의 문제 상황과 맞는 디자인 패턴을 발견한다면, 언제든 적용해 볼 수 있다. 

    또한 '형식화 된 가장 좋은 관행' 또한 중요한 의미를 담고 있다. 우리가 마주하는 수많은 문제들은 개발 도메인에 따라 복잡하고 긴 이름을 담고 있다. 매번 그 길고 복잡한 이름을 거론하며 회의 시간에 해결 방법을 논의한다면 회의 시간은 문제 해결보단 이름을 정확하게 부르는데 힘을 쏟게 될 것이다. 개발자들 간의 약속처럼 디자인 패턴에 대해 알고 있다면 "OOO 패턴"이라는 짧고 명확한 이름을 통해 훨씬 효율적인 시간을 보낼 수 있게 될 것이다. 훨씬 전문가처럼 보일 수 있기도 한 것은 덤이다.

    이렇게 좋아보이는 디자인 패턴에 장점만 있는 것은 아니다. 디자인 패턴으로 만들 필요가 없는 간단한 문제조차 어떤 패턴을 활용해야 하는지 고민하는 것은 오히려 시간 낭비가 될 수도 있다. 또한 대부분의 디자인 패턴은 객체 지향 프로그래밍에 기초를 두고 있기 때문에 또 다른 패러다임의 개발 방식을 적용하는 데에는 오히려 허들로 작용할 수도 있다. 그 외에도 다양한 문제점들이 있을 순 있지만, 개발자라면 한 번쯤은 디자인 패턴에 대해 공부해보기를 권한다.

    헤드퍼스트 디자인패턴

     

     

    이번 포스팅은 한빛 미디어의 나는 리뷰어다 이벤트를 통해 제공받은 <헤드 퍼스트 디자인 패턴>을 읽고 작성하였다. 이 책은 디자인 패턴을 학습하기 위한 최고의 책인지는 장담할 수 없지만(디자인 패턴에 관해 읽은 책은 이것이 두번째이다) 디자인패턴에 대해 이해가 낮은 나에게는 아주 좋은 학습자료의 역할을 해 주었다.

    <헤드 퍼스트 디자인 패턴>은 하나의 패턴에 대해 다양한 방법으로 소개해 주고, 중간중간 이해하는데 도움이 될만한 간단한 퀴즈도 준비해 주었다. 좀 더 자세히 말하면, 하나의 주제에 대해서 아주 구체적인 예시 상황을 먼저 제시해 주고 그에 대한 해결책인 디자인 패턴을 소개해 준다. 작동 예시에 대한 이미지를 두어 작동 원리를 파악하기 쉽게 해 준다. 시니어 개발자와의 QnA 시간을 갖고 난 다음, 디자인 패턴들끼리의 가상 인터뷰를 통해 각 패턴들이 갖는 특징들을 다시 한번 상기시킬 수 있도록 도와주도록 구성되어 있다.

    이 책은 하나의 패턴에 대해서 디테일하게 학습하기에 아주 좋은 구성으로 되어 있어 처음 디자인 패턴을 접하는 학습자들에게는 아주 큰 도움이 될 것 같다. 반면 디테일한 내용을 담았기 때문에 수많은 디자인 패턴들을 훑어보면서 필요한 내용만 답습하고자 하는 분들에게는 오히려 이러한 방대한 내용이 방해가 될지도 모르겠다. 만약 수 많은 패턴들 틈 속에서 원하는 부분만 발췌해서 읽어나가길 원한다면, <쉽게 배워서 바로 써먹는 디자인 패턴>을 참고하는 것도 도움이 될 수 있다

    추가로 <쉽게 배워서 바로 써먹는 디자인 패턴>은 php 기반이고 <헤드 퍼스트 디자인 패턴>은 java 기반이지만, 디자인 패턴은 객체지향을 지원하는 언어라면 두루두루 써먹을 수 있기 때문에 책 내부의 예제 코드를 훑어보고 어느 정도 읽을만하다고 느낀다면 충분히 도전해볼 만하다고 생각한다.

    약 4주간의 리뷰 시간이 주어졌지만, 충분히 책을 이해해나가며 읽기엔 회사일과 육아를 병행하면서 완독 하는 것은 무리였다. 나중에도 시간을 들여가며 java 코드를 c++로 변환해 가면서 책을 충분히 소화시키는 기간을 갖는다면 디자인 패턴을 이해하는데 큰 도움이 될 것 같다.



    출처: https://jaksam.tistory.com/51 [작삼심일의 블로그]

  • 이 책에서는…

    book


    지금이야 다양한 디자인 패턴을 활용하고 또 필요에 따라 응용하기도 하지만 처음부터 그런 것은 아니었습니다. 학부생시절 강의를 통해 디자인패턴을 배웠으나 그 당시에는 디자인 패턴의 중요성을 깨닫지 못했습니다. 그 당시 학생수준에서 개발한 소스코드는 제출로 끝인 과제만 있었기 때문에 유지보수에서 일어나는 문제를 알 수 없었고 결과적으로는 디자인 패턴의 필요성도 느끼기 어려웠습니다. 그러나 상용 프로그램을 개발하기 시작하면서 부터 깨달은 점은 개발자는 새로운 것을 개발하는 시간보다 더 많은 시간을 기존에 개발되어 있는 소스코드를 수정하는 데 쏟는 다는 점입니다. 쉽게 말해 SW불변의 진리는 변화입니다.


    계속 변화하는 SW

    변화하지 않는 SW는 죽은 SW 뿐입니다. 즉 살아있는 SW프로젝트라면 변화할 수 밖에 없습니다. 개발자가 산출물을 빠르게 내는 것 보다 유지보수하기 좋은 코드를 짜는 것을 더 중요하게 생각하는 이유도 여기에 있습니다. 디자인패턴은 이러한 SW 유지보수하며 나올 수 있는 공통적인 문제를 객체지향 디자인 원칙에 따라 해결하는 가장 효과적인 방법 혹은 모범사례라 할 수 있습니다. 그리고 이 헤드퍼스트 책은 그 디자인 패턴을 가장 효율적으로 학습할 수 있는 책입니다. 이 책에서는 단순히 디자인패턴을 나열하며 소개하는 것을 넘어 객체지향적 디자인 원칙(설계 원칙)을 소개하고 그에 적합한 디자인패턴을 하나씩 소개합니다. 그 과정에서 디자인 패턴이 ‘왜 필요한지’를 충분히 공감할 수 있도록 구체적인 문제 시나리오를 설정하고 그 문제를 ‘어떻게 해결 할 것인지’를 단계별로 이해할 수 있도록 많은 지면을 할애해가며 차분히, 그리고 반복적으로 설명합니다.




    헤드퍼스트 시리즈

    헤드퍼스트는 독보적으로 실용적이고 효과적인 책입니다. 눈에 띄는 이미지와 구어체로 정보를 여러분 머릿속에 강제로 주입합니다. 어렵고 격식있고 정제된 문어체 대신 직관적이고 쉬운 구어체와 이미지들로 소화하기 쉬운 상태로 내용을 전개하는 등, 책의 구성 자체가 중요한 정보를 뇌리에 박히게끔 의도되어 있습니다. 은근 페이지가 많아보이는데 그 이유는 더 많은 내용을 설명하기 위해서가 아니라 더 쉽고 친절하게 설명하기 위해 지면을 투자하기 때문입니다. 이번 개정판에서는 전체적으로 이미지와 레이아웃이 깔끔해져서 가독성이 좋아졌지만 아이러니하게도 더 이상 예전의 헤드퍼스트 특유의 이질적인 느낌의 사진과 삽화를 볼 수 없는 점은 개인적인 아쉬움이 있습니다. 그러나 디자인 패턴을 의인화 하여 인터뷰를 하고, 퀴즈를 내고, 스승과 제자의 대담 등으로 구성되어 여전히 재미있으며 쉽고 빠르게 학습할 수 있도록 당신의 뇌를 말랑말랑하게 활성화 시켜줄 것입니다.




    디자인패턴이란

    디자인 패턴이란 Gof(Gang of Four)가 정립한 개념으로 SW개발(특히 유지보수/코드수정)에서 흔히 발생하는 문제들을 객체지향 디자인 원칙에 맞게 코드수준에서 해결하는 검증된 방법론 또는 코드 형식입니다. 이미 개발자 생태게에서는 상식수준으로 통용되어 장황하게 설명하는 대신 FactoryRepositoryAdapter 처럼 디자인 패턴 이름만으로도 어떤 문제를 어떻게 해결하고자 한 코드인지 정확하게 파악이 가능하여 훨씬 효율적으로 소통할 수 있게 해줍니다.

    장황하게 설명했으나, 객체지향적 코드 패턴이라 이해하시는 걸로 충분합니다.
    그보다 중요한 점은 개발자라면 상식으로 반드시 알아야한다는 것입니다.




    abstract

    객체지향 디자인 원칙이 아주 원론적이고 가장 추상적인 개념이라고 한다면 디자인 패턴은 이러한 디자인 원칙을 바탕으로 한 실제 코딩 유형 또는 전략에 해당합니다. 여전히 추상적인 수준이고 언어에 종속되지 않고 객체지향 언어라면 어느 언어에서나 적용할 수 있습니다. 그러나 디자인 패턴이 라이브러리나 프레임워크로 존재하기 어렵습니다. 그 이유는 대부분의 디자인 패턴이 실제 소스코드로 구현된 수준이 아닌 그 이상의 추상화를 필요로 하고 또 실제 용도에 따라 다르게 응용되거나 적용되는 방법이 다양하기 때문입니다. 실제로 Java에서도 옵저버 패턴이 java.util.Observer로써 존재했으나 Java9 부터 deprecate 된 사례도 있습니다. 결론적으로 디자인 패턴은 구현된 라이브러리로 참조해서 사용하는 대신 패턴으로써 필요한 순간에 개발자가 자신의 목적에 맞게 직접 구현해야하므로 디자인 패턴을 언제 어떻게 사용해야하는지 확실하게 이해하고 있어야 합니다.




    결국엔 추상화와 인터페이스

    궁극적으로는 디자인패턴은 추상화 통해 SW의 본질인 수정과 유지보수에 유리한 구조를 만드는 작업이라고도 할 수 있겠습니다. 디자인패턴은 결국 어떤식으로 추상화를 하느냐, 즉 인터페이스 설계에 관한 이야기라고 봐도 무방합니다. 클래스의 책임을 나누어 결합성을 낮추고 그래서 수정으로 인한 영향을 다른 클래스에 전파하지 않도록 하거나, 비슷한 역할을 모아서 응집도를 높여서 관리포인트를 줄일 수도 있습니다. 이 책에서는 객체지향의 추상화가 무엇인지 다시 한번 고민해보게끔 도와주며 또 객체지향 디자인 원칙만으로는 실무 수준에서 코드를 설계하는데 모든 문제를 대응할 수 없는 이유를 다시금 설명합니다. 대표적으로 학부생 시절에 상속을 통해 재사용성을 높인다고 배운 점이 실제로는 어떤 부작용을 초래하는지 등 사례를 통해 실전레벨의 추상화를 배우실 수 있습니다.




    이런 사람들에게 추천합니다.

    개발경력을 이제 막 시작한 주니어 개발자에게 강력 추천합니다.

    만약 1~3년차정도의 주니어 개발자가 성장에 정체기가 왔다면, 혹은 주니어 티를 벗고 이제는 중니어(?) 개발자가 되고 싶다면 이 책으로 시작해보세요. 개발자의 학습을 돕는 많은 자료는 초심자를 위한 입문서거나 아니면 아예 수준급 전문가를 위한 내용인 경우가 많습니다. 하지만 반대로 입문 이후 실무를 뛰면서 생기는 고민들을 해결해주거나 내공을 쌓기위해 볼만한 자료들을 생각보다 찾기 어렵습니다. 이 책은 그런 점에서 주니어개발자라면 꼭 한번 읽어볼 책으로 강력히 추천드립니다. 또 이미 어느정도 연차가 있으신 분들도 이 책을 읽으면서 디자인 패턴을 잘 사용하고 있는지, 또 객체지향 디자인 원칙을 잘 준수하고 있는지 되돌아보기 위해 읽어보는 것도 좋을 것 같습니다. 하지만 아직 실무 경험이 없는 학생이라면 이 책을 읽어보는 것도 분명 도움이 되겠지만 와닿지 않을 수도 있을 것 같습니다. 헤드퍼스트 시리즈인 만큼 학생도 충분히 읽을 수는 있으나 아무래도 유지보수 경험이 생긴 이후에 좀 더 그 의미를 공감하면서 재밌게 읽으실 수 있을 것입니다. 그러나 신입 개발자분들이라면 오히려 이 책을 읽고 모든 것을 디자인패턴으로 구현하려는 디자인패턴-만능주의에 빠지는 개발자-사춘기에 빠질 수도 있으니 주의가 필요합니다. 물론 그 순간을 슬기롭게 지나고 나서, 어느새 성장해있는 본인의 모습을 발견하실 수 있을 것입니다.

  • ◎ 추천 포인트

    1. 원서의 미국인 취향 이미지를 한국인 취향으로 완전 변경
    2. “GoF의 디자인 패턴”을 보기전 몸풀기
    3. 가벼운 마음으로 읽을수 있는 구성
    4. 1판을 본적 없다면…

     

    몇년 전에 읽어본 책인데, “16년만에 개정된 한국 특별판”이라는 문구에 끌려 보게 되었다.
    헤드 퍼스트 디자인 패턴은 “GoF의 디자인 패턴”중 많이 쓰이는 패턴을 쉽게 이해해도록 구성된 책이다.
    이미 유명한 책이서 내용에 대해 크게 리뷰할 것은 없어 보인다.

    결론부터 말하자면, 1판을 본사람은 굳이 또 볼 필요는 없겠다.
    한국 특별판은… 그림이 다를 뿐이다.


    이런 미국인 취향에서


    이런 한국의 그림스타일로 바뛰었다.
    내용의 변경점은 거의 느낄수 없었다.

     
    사실 이런 그림을 미국인이 아닌 우리나라사람이, 그것도 요즘 세대에서 보면 이해하기 어려울 것 같다.
    헤드퍼스트라는 시리즈에서 추구하는 학습방법면에서 오히려 걸림돌이 될수도 있다.
    그런 부분을 우리나라 독자에 맞게끔 초월번역한것은 칭찬받아 마땅할 것이다.

    하지만 한국만의 이미지를 제외하고 나면 단점도 좀 보인다.
    우선 시인성이 많이 떨어진다.
    1판과 달리, 2도 인쇄를 한건 좋은데… 색 선택이 잘못된것 같다.
     
    그림의 느낌을 살리기 위해서 인것 같은데… 진한 남색 같은 색을 썼으면 더 좋았을것 같다…

    내용면에서 보자면 1판과 바뀐게 거의 없다.
    GoF 디자인 패턴이 바뀐게 없으니 당연할 수도 있지만, 뭔가 새로운 예시나 현대적인 내용이 추가된것이 없다.
    1판을 본 사람이라면 굳이 볼필요가 없겠다.

    그리고, 헤드퍼스트 특유의 구성이 안 맞는다면 오히려 보기 않좋을 수도 있다.
    개인의 취향에 따라 조금 난잡하거나 혼란스럽게 느낄수도 있다.
    그리고, 600페이지나 되는 볼륨치고 내용은 그리 많지 않게 느껴진다.
    몇개의 주요 패턴 위주로 구성되고, 나머지는 가볍게 소개하는 수준이다.
    (경우에 따라선 핵심적인것만 살펴볼수 있으니 이게 장점일 수도 있다.)

  • 오늘 리뷰할 책은 정말 오랜만에 개정판이 나온 반가운 책이다.
     
    소프트웨어를 개발하는 사람들에게, 특히나 자바 개발자들에게 정말 유용한 [헤드 퍼스트 디자인 패턴] !!!
     
     
     

    신판 표지.jpg

     

     
    이 책이 특별히 반가운 이유는 내가 2005년 판을 가지고 있기 때문이다. 

    수많은 한빛미디어와 오렐리 책이 있었지만, 

    그동안 몇차례의 이사와 보관의 압박으로 상당수의 책을 폐지 수거하시는 분들에게 드렸었다. 

    그 와중에도 특별히 이 책은 애정이 가는거라 보관하고 있었던거였다.
     
     

    구판.jpg

     

     
    신판의 목차와 책을 쭈~욱 빠르게 본 결과... 구판에 비해 내용상으로 크게 바뀌지는 않았다. 
     
    IT가 워낙 빠르게 변하는 부분이지만, 디자인 패턴 자체는 거의 변화가 없는 부분이라 그럴 것이다. 
     
    어쨌든 신판과 구판의 사진을 비교해보면...
     
    - 구판의 단색 인쇄가 신판에서는 2색 인쇄로 바뀌어 가독성이 좋아졌다.

    신판 코드.jpg

     

     
    - 구판의 클래식? 복고풍? 사진들이 깔끔한 한국식 일러스트로 바뀌었다.
     
     

    신판 그림.jpg

     

     
    - 마지막에 목차 하나 정도가 추가
     
    - 용지도 훨씬 고급진거로 변경
     
    어쨌든 "헤드 퍼스트" 시리즈는 많은 그림과 함께 대화체로 쉽게 설명하는 내용들로 이루어진 시리즈 책이므로 
     
    무조건 추천한다.
     
    수많은 패턴들 중에서 엄선된 패턴들을 많은 그림, 자세한 설명, 자바 코드들로 설명하고 있고 챕터 뒤에는
     
    퀴즈도 있다. 이 퀴즈는 재미도 있고, 공부한 내용을 확인하기 위해 꼭 풀어보길 권한다. 정답도 있으니까.
     
     

    신판 퀴즈 정답.jpg

     

     
     
    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

  • IMG_4125.JPG

     

     

    우리나라에 헤드 퍼스트 디자인 패턴 책이 2005년 초판이 나온 이후 16여 년 만에 개정판으로 돌아왔습니다. 특히 이번 개정판은 한국 특별판으로 재탄생했습니다. 제가 가지고 있는 헤드 퍼스트 시리즈 책과 비교해 봐도 신경을 많이 썼다는 것을 느낄 수 있어습니다. 세련된 디자인과 일러스트레이션 들로 인해 이전 시리즈 들에서 느껴졌던 이질감 같은 것이 사라져 완전 새로운 시리즈의 책을 읽는 것 같았습니다.

     

    소프트웨어를 설계할 때 중요하다고 하는 디자인 패턴이 워낙 종류도 많고 어떻게 배울 지 막막하던 참에 이 책을 만날 수 있어 행운이라고 생각했습니다. 그나마 제가 알고 있는 패턴 이라함은 MVC 패턴 뿐이었습니다. 아무래도 php로 웹 개발을 주로 하다보니 디자인 패턴에 대해 크게 고민하지 않고 배우지 않았던 것 같습니다. 게임회사에 근무 할 때 C# 게임 개발자 동료들이 옵저버 패턴, 싱글턴 패턴 등에 대해 이야기 할 때 무슨 이야기를 하는지 몰랐던 기억이 있습니다. 전에 이 책을 만나 읽었더라면 이야기에 낄 수 있었을텐데 아쉽습니다.

     

    정말 간단한 Java언어 예제로 디자인 패턴을 설명하기 때문에 제가 사용하는 주언어가 아님에도 디자인 패턴을 학습하는데에는 크게 문제되지 않았습니다. 그리고 보통의 학습서들은 그림이 많이 나오지 않는데 헤드 퍼스트 시리즈 답게 적재 적소에 다양한 그림을 활용해 개념들을 설명하기 때문에 지루하지 않게 한 챕터 한 챕터 학습하실 수 있습니다.

     

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

     

  • 이번 달은 디자인 패턴 관련 서적 중 인기가 많은 헤드퍼스트의 디자인 패턴을 받아 읽게 되었습니다.

     

    부트캠프에서 멘토님께서 다양한 디자인패턴을 적용한 코드를 보여주셨기 때문에 패턴의 중요성에 대해 인지를 하고 있는 상태였고, 관련해서 공부를 하고 싶다는 마음도 있었습니다.

     

    코딩 테스트, 자바, DB 등 팀원들이 진행하던 스터디 중 디자인 패턴도 물론 존재했고 이 책으로 진행하여 좋은 후기를 남겼던 것이 기억에 남아 이번 달 도서 목록에 이 도서가 있었다는 것이 굉장히 기뻤습니다.

     

    개인적으로 디자인패턴은 객체지향 개념을 토대로 만들어졌기 때문에 자바 개념을 어느 정도 확립하고 공부하면 효율성이 더 좋다고 생각해 현재보다는 이후에 공부할 계획이었습니다.

     

    하지만, 좋은 기회로 책을 제공받은 만큼 특정 패턴 몇 개만 집중적으로 읽어보고 후기를 남기기로 하였습니다.

     

    헤드퍼스트 디자인패턴

     

     

    책의 구성을 먼저 살펴보면 일반 서적과는 서술 방식이 많이 다르기 때문에 어떻게 책을 읽어야 하는지에 대한 방법이 서술되어 있고, 이를 기반으로 총 14개의 챕터(패턴)를 읽을 수 있습니다.

     

    헤드퍼스트에 대한 저의 개인적인 경험은 부정적이었습니다. 왜냐하면 대학생 때 자바를 처음 접하던 시절 헤드퍼스트 서적을 택해 공부하였는데 아는게 1도 없던 시절에 그림이 다양하고 톡톡 튀는 느낌의 설명을 받아들이기 어려워 다른 책으로 학습했기 때문입니다.

     

    하지만, 오늘 이 책을 읽은 결과 그림을 통한 예제와 대화체를 통한 의문 제기 등이 오히려 저에게 쉽게 다가와 내용을 쉽게 익힐 수 있었습니다.

     

    1장은 디자인 패턴 소개와 간단한 예제를 통해 코드에 전략 패턴을 입히는 과정으로 진행되는데 해당 내용에 관해 간략하게 내용을 작성해보겠습니다.

     

     

    Chapter 1. 전략 패턴

     

    오리가 꽥꽥소리를 내고 헤엄을 치는 등의 관련 행동을 코드로 나타내면서 시작합니다.

     

    어느 프로젝트나 그렇듯 먼저 동작하게 구현하는 것이 중요하기 때문에 Duck이라는 슈퍼클래스로 오리와 관련된 모든 코드를 작성합니다.

     

    이후에 클래스를 확장해 나가면서 다른 종류의 오리를 만듭니다.

     

    간단하게 생각하면 상속을 받아 메서드를 재정의해 사용하면 오리 종류별로 다른 행동을 나타낼 수 있다.

     

    물론, 코드를 재사용할 수 있어 좋은 방법이라고 생각할 수 있지만 유지보수를 생각했을 때 많은 코드가 중복되어 좋아 보이지 않는다.

     

    이처럼 상속을 사용하면 코드가 중복되고, 모든 오리의 행동을 알기 힘들다는 단점이 있다.

     

    그렇다면 상속 이외에 어떤 방법이 있을까? 

     

    책에서는 먼저 디자인 원칙 중 첫 번째 원칙인 '애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다'을 추천하고 있습니다.

     

    이 방법은 달라지는 부분을 먼저 찾고 캡슐화를 적용해 이외의 코드에 영향을 주지 않도록 하는 방법이기 때문에 시스템의 유연성을 향상할 수 있습니다.

     

    위 개념은 모든 디자인 패턴의 기반이라고 알고 있으면 되는 만큼 패턴을 공부할 때 전제를 깔고 진행하시면 좋을 듯합니다.

     

    이후에 변화하는 부분을 뽑아내고 두 번째 디자인 원칙인 '구현보다는 인터페이스에 맞춰서 프로그래밍한다'를 적용해보자.

     

    나는 행동을 예로 들면 FlyBehavior이라는 인터페이스를 만들고 fly()라는 메서드를 만들어 이 행동을 필요로 할 때 구현체를 만들어 각기 다른 나는 방법을 만들어낼 수 있습니다.

     

    이 방법을 사용하면 상속을 사용할 때 생기는 문제를 피하면서 재사용의 장점을 누릴 수 있습니다. 

     

    추가로 setter를 사용해 동적으로 필요한 행동을 지정해 동작하도록 만들 수도 있습니다.

     

     

     

    간단하게 한 챕터의 예제를 리뷰해보았는데 제 글보다 실제로 책을 본다면 그림을 통한 예제와 직접 대화를 나누는 것처럼 진행되어 훨씬 이해가 잘 될 것입니다.

     

    총 14개의 패턴이 서술되어 있는 만큼 한 번 쭉 읽어본 후에 실제 패턴을 적용할 일이 있다면 해당 패턴을 집중적으로 다시 공부한다면 충분히 패턴에 중독될 수 있을 것이라고 생각합니다.

     

    저도 객체지향에 대해 다시 공부하고 있는 입장이라 현재는 얕게 이해하고 넘어가지만 추후에 다시 읽어본다면 저에게 많은 도움이 될 것이라고 느꼈습니다.

     

    600쪽이 넘는 방대한 양인만큼 혼자서 공부하면 지루할 수 있으니 스터디를 만들어 같이 공부하는 것도 좋은 방법이겠네요ㅎㅎ

     

    쉽고 머리에 쏙쏙 박히는 디자인 패턴 서적을 원하신다면 강추합니다!!

     

     

     "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


  • 헤드퍼스트 시리즈는 대화하듯이 재밌게 개발을 알려줍니다.

     

    지금 알려드리려는 책도 그 시리즈 중 하나인데요.

    알려드릴 책은 ‘헤드퍼스트 디자인패턴 개정판’입니다.

     

    기존 책도 재밌게 읽었는데요.

    14가지 GoF 디자인 패턴과 9가지 디자인 원칙도 알려줍니다.

     

    실전에서 많이 쓰이는 디자인 패턴을 쉽게 풀어준 책입니다.

     

    또한 패턴을 쓰지 말아야 하는 경우도 있는데요.

    사용하지 말아야 할 때를 아는 안목도 필요합니다.

     

    헤드퍼스트 디자인 패턴책을 같이 알아보겠습니다.

     

     

    4220423.jpg

     

     

    ◆ 디자인 원칙

    사람들이 객체지향을 공부하고 적용을 하려 합니다.

     

    하지만 적용을 제대로 못 하는 경우도 있습니다.

     

    못하는 경우는 디자인의 근간인 디자인 원칙을 이해하지 못했기 때문입니다.

     

    객체지향을 잘 적용하려면 캡슐화 원칙, 인터페이스 우선 원칙 등을 이해해야 합니다.

     

    각장마다 연습문제도 있어서 공부한 내용을 복습도 하며 소화를 할 수 있을 것입니다.

     

     

    2220423.jpg

     

     

    ◆ 객체지향에 대한 이해

    객체지향을 처음 배울 때 상속을 쉽게 떠 올립니다.

     

    시니어 개발자와 주니어 개발자가 대화하듯이 객체지향을 풀어냅니다.

     

    주니어 개발자라면 개발하면서 고려하지 못하는 부분이 있을 수 있는데요.

    개발할 때 고려해야 할 개념을 이해할 수 있도록 다이어그램과 일러스트로 코드 구성을 한눈에 볼 수 있습니다.

     

    코드에도 상세한 설명이 되어 있어 설명을 참고하며 공부하면 됩니다.

     

    이야기를 통해 객체지향을 여러 관점에서 생각해보며 학습할 수 있습니다.

     

     

    3220423.jpg

     

     

    끝으로 디자인 패턴을 알려줄 때 답을 알려줍니다.

     

    그림 설명과 객체지향을 제대로 알아가는 과정을 알려줍니다.

     

    핵심 용어를 공부하면서 알려준 것을 문제를 통해 체크할 수 있습니다.

     

    개정판이 한국 독자만을 위해 재탄생했단 부분이 더 의미 있었습니다.

     

    개정판의 좋은 점은 자바 8부터 최신버전인 자바 16까지 문제없이 작동하도록 예제코드도 수정이 되었습니다.

     

    디자인 패턴을 재미있게 공부하며 여러 관점에서도 생각할 수 있는 질문도 던져줍니다.

     

    GoF 디자인 패턴의 핵심을 공부하고 싶은 분들에게 이 책을 추천합니다.

     

    1220423.jpg

     

    한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

  • "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

     

     

    챕터 1에서 읽으면서 이걸 왜 해야하는 거지? 하고 갖고 있던 문제집을 봤다.(사실 이 책을 읽는 이유 중 하나는 내가 여태 자격증 하나를 제대로 못 따서 그런 것도 있다..) 읽고 왜 챕터 1에서 이런 예시를 들어가며 이야기를 풀어갔는지 납득했다.(기껏 눈높이 교육을 해주고 있는데 받아먹지 못하는 내 자신을 되돌아보며 약간 고민 좀 하고)

     

     

    대상 독자는 전문가 수준으로 요구하지는 않지만 그래도 자바나 C#을 어느 정도 알고 있는 사람들이 대상이다. 그리고 참고서 같은 책을 찾는다면 이 책은 별로 좋은 책이 아니라고 하는데 개인적으로 이 정도면 충분히 참고서아닌가 싶다. 자격증 공부하면서 이게 뭔 소리야.. 하고 아리송했던 그 디자인패턴에 대해서 개인적으로 정말 아주 만족스러운 예시로 설명해주고 있었다. 특히 학습만화같은 느낌의 흐름이 있어서 좀 글자만 있어서 눈이 감길까 싶은 걸 방지해주는 거 같기도 하다.

  • 이 책은 유명한 IT도서 시리즈 해드퍼스트의 디자인패턴 개정판이다.

    내가 개발공부하면서 정말 많은 도움을 받았던 해드퍼스트 시리즈 이기 때문에

    개인적으로 신뢰도가 높다.

    이 시리즈의 공통점은 독자가 효율적으로 학습하기 위해 상당히 노력을 기울였다는 것이다.

    어떠한 개념을 설명하기 위해 효과적인 예시와 이야기 형식으로 문제를 다룬다.

    학습자와 같은 시선으로 따라 들어가 문제가 발생하고 해결하기 까지 같은 시선으로

    충분한 이해를 돕는데 탁월하게 구성이 되어있는게 특징이다.

    따라서 어떠한 개념에 대해서 처음 접하는 입문자에게 큰 도움을 준다.

    하지만 이러한 특성 때문에 어느정도 기초적인 개념을 알고 필요한 부분만 참고하기에는

    적절하지 못하다는 특징이 있다.

    그렇기 때문에 해드퍼스트 시리즈는 보통 입문자에게 추천을 한다.

    하지만 이 책은 다르다 디자인 패턴자체가 한번 읽고 체득하는게 아니라

    테스트 주도 개발(TDD)과 같이 계속해서 갈고 닦아야 하는 기술이다.

    계속 보면서 이해하고 깨닫고 다시 보면서 내것으로 만드는 과정이 필요하다.

    (디자인패턴이든 TDD 제대로 할줄도 모르는건 안비밀)

    디자인패턴?

    여기서 말하는 디자인 패턴을 풀어서 이야기 하자면

    프로그램 개발중에 접할 수 있는 다양한 경험들에 대해서 일종의 베스트 프렉티스(Best Practice)를

    패턴화 하여 정립한 것을 말한다. 최선책이지 절대적인 방법을 말하는 것은 아니다.

    어느정도 프로그램의 작성경험이 있는 독자가 본다면 자신이 자연스럽게 작성했던 패턴과 비슷한

    형태를 가지고 이름을 지었다는 생각을 가질 수도 있다.(천재인가? 나는 아님)

    나름대로 정의한 단순한 정의는

    경험의 재사용성 극대화

    -내 생각-

    소스코드 작성에 있어서 재사용성의 대한 효율성을 극대화 하기위한 개념이 발전한 것이라 생각한다.

    어떠한 값을 재사용하기 위해 변수를 사용하고 그것이 진화하여 같은 형태의 값들을 재사용하기위한 효율적인 방식[배열] 더 나아가 [구조체나], [클래스]의 형태로 점점 개념이 진화하고(물론 클래스는 이것 이상의 개념이 있지만)

    점더 큰 개념으로 [디자인패턴]이라는 "경험"을 재사용하고 그것이 보다 더 큰 개념에서 [프레임워크]라는 것을 통해서 재사용성을 극대화 시켰다라고 생각한다.

    모든 것이 재사용성이라는 효율성을 극대화해서 생겨난 개념이라 생각한다.

    그리고 소프트웨어에 이 같은 개념이 하드웨어로 넘어가는게 점점 확대 되면서 이 세상도

    극단적으로 효율성을 추구하고 있다.

    이제는 세상에 비효율적인 것이 사라지고 효율적인 것들만 남게 될 것이다.

    그..그렇다면 이제 나도.....

    계속 글을 작성하면 망언을 할 것 같아서 여기까지만 작성해야겠다.

     
     

  •  


    [도서 소개]


    유지관리가 편리한 객체지향 소프트웨어 만들기!


    “『헤드 퍼스트 디자인 패턴(개정판)』 한 권이면 충분합니다!”


    이유 1. 흥미로운 이야기와 재치 넘치는 구성이 담긴 〈헤드 퍼스트〉 시리즈!

    하나의 패턴에 하나의 이야기를 담았습니다. 틀에 박히지 않아 지루할 틈이 없는 구성과 친구와 이야기하듯 편안한 대화체로 이야기를 풀어냅니다. 이야기 속에 다양한 방법으로 해결할 수 있는 질문과 90개 이상의 연습문제를 담았습니다. 마치 게임 퀘스트를 해결하듯 문제를 하나하나 해결하다 보면 학습한 내용이 머릿속에 강렬하게 남습니다.


    이유 2. 원스톱으로 배우는 14가지 GoF 핵심 디자인 패턴과 9가지 객체지향 디자인 원칙!

    현장에서 자주 사용되는 옵저버, 어댑터, MVC 패턴 등 14가지 GoF 객체지향 패턴을 중점으로 패턴의 정의, 사용 시기, 사용처, 사용 이유, 즉시 디자인에 적용하는 방법을 알려줍니다. 이와 더불어 객체지향 프로그래밍에 광범위하게 적용할 수 있는 OCP, 할리우드 원칙 등 9가지 객체지향 디자인 원칙과 패턴으로 생각하는 방법도 알려줍니다.


    이유 3. 시대의 변화에 맞춘 개정과 한국 독자만을 위한 특별판!

    자바 8과 자바 16 이상에서 무리 없이 동작할 수 있도록 예제 코드를 수정했으며, 부가적인 설명과 Q&A 질문을 추가했습니다. 또한 16여 년 만의 개정을 기념해 오직 한국 독자만을 위한 새로운 삽화를 사용하고 한글 친화적인 구성했습니다. 원서를 읽을 때보다 더욱 편안하게 디자인 패턴을 학습할 수 있습니다.



    [대상 독자]

    - 유지보수만 생각하면 그저 눈물인 주니어 (자바) 개발자

    - 디자인 패턴을 다시 한번 살펴보고 싶은 시니어 (자바) 개발자

    - 개발 현장의 소프트웨어 디자인 방법이 궁금한 개발자 지망생


    [주요 내용]

    - 14가지 GoF 핵심 패턴의 사용 시기와 이유!

    - 즉시 디자인에 적용하는 방법!

    - 쓰지 말아야 하는 상황!

    - 패턴의 근간이 되는 객체지향 디자인 원칙!

    - 그 밖에 알아 두면 좋은 9가지 패턴의 정의와 사용법!


    [서평]


    헤드 퍼스트 디자인 패턴은 2005년 출간 후 17년이라는 시간 동안 디자인 패턴 분야에서 사랑 받아온 이유는 GoF 디자인 패턴의 핵심을 잘 다루고 있기 때문이다. 


    이 책에는 그림이 많습니다. 두뇌는 글보다는 그림에 더 민감하게 반응하기 때문입니다. 그림 한장이 1,024개의 단어보다 낫습니다. 그림 안에 글을 넣었을 때 더 기억할 수 있습니다.

    같은 내용을 서로 다른 방법과 매체로 여러 감각을 거쳐 전달해서 설명한 내용이 머리에 더 잘 기억 됩니다. 여러 번 반복하면 그만큼 잘 기억할 수있습니다. 개념과 그림을 예상하기 힘든 방식으로 사용합니다. 두뇌는 새로운 것을 더 잘 받아들이기 때문입니다. 그리고 패턴 중독을 피하는 방법과 디자인 패턴을 발견하는 방법도 다루고 있어 미래의 패턴 디자이너에게도 도움이 될것입니다.


    이 책이 필요한 사람

    • 자바를 잘아는 사람

    • 디자인 패턴과 디자인 패턴의 기반이 되는 객체지향 디자인 원리를 배우고, 이해하고, 기억하고, 작용하는 싶은 사람

    • 지루하고 학구적인 강의보다 선배가 옆에서 알려주는 거 같은 대화체를 선호하는 사람


    이 책과 맞지 않는 사람

    • 자바를 처음 배우는 사람(하지만 자바를 아주 잘 알아야 하는 것은 아닙니다. 자바를 몰라도 C# 혹은 C++등 객체지향 언어를 안다면 이해를 할수 있습니다.)

    • 참고서를 원하는 전문 객체지향 디자이너나 개발자

    • 특정 디자인이나 개발 전문가가 볼 만한 참고서를 찾는 사람

    • 뭔가 새로운 형태에 대해서 싫어하는 사람

    • 자바 컴포넌트를 의인화한 책은 제대로 된 기술서가 될 수 없다고 생각하는 사람



     "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

  • 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

    우선은 그동안 가지고 있던 선입견을 깬 책이었다.

    그 전에 읽었던 '헤드퍼스트' 시리즈는 때문에,

    이 시리즈는 입문용으로 깊이가 얕고,

    많은 이미지와 독특한 구성으로 쉽게 접근할 수 있지만, 다루는 내용은 많지 않다.

    그리고, 같은 내용을 반복하는 경향이 많다.

    하지만, 이 책은 많이 달랐습니다.

    다른 책과는 다른 독특한 구성을 가지고 있는 것은 동일하지만,

    다루는 내용은 다른 디자인 패턴책보다 부족하지 않습니다.

    특히 예제 소스는 가장 충실하다고 생각됩니다.

    서평 중에 패턴 수업은 이 책으로 충분했다라고 써 있어서,

    과장이라고 생각했지만, 책을 다 읽은 후에 생각은 동감입니다.

    이 책에서도 이 책을 읽은 후에 GOF의 책을 읽어보라고 추천하지만,

    만약 제가 패턴 스터디를 한다면 이 책만을 가지고 진행하려고 합니다.

    패턴도 충실하게 다루면서, 객체 설계에 대한 디자인 원칙도 다루고 있으며,

    개발자가 생각할 꺼리도 많이 던저 주고 있습니다.

    지금까지 본 디자인 패턴 책 중에서는 최고의 입문서라고 생각합니다.

  •  

    객체지향 언어로 소프트웨어를 개발하면서 필수로 알아야 하는 디자인 패턴을 정리해놓은 책이 이번에 개정판으로 돌아왔다. 바로 "헤드퍼스트 디자인 패턴"이 그 주인공이다. 이 책은 우리의 좌뇌와 우뇌가 골고루 일 할 수 있도록 알차게 구성되어 있다. 독자가 책을 더 깊이 있게 이해하고 흥미롭게 읽을 수 있도록 글과 그림을 적절히 섞어뒀다. 아마 오랫동안 머릿속에 기억될 듯한데 하나씩 살펴보도록 하자. 

     

     

     

    호기심을 한껏 당겨주는 도입부가 인상적이다. 헤드퍼스트에서 발간되는 모든 책에 들어가는 내용인지는 모른다. 헤드퍼스트 책은 처음이라. 많은 페이지에 적절하게 그림이 들어가 있다. 지금까지 이런 책은 처음이다.

     

     

     

    독자가 진심으로 공부할 수 있도록 두뇌를 정복하는 방법까지 지면으로 설명하고 있다. 이 정도면 패턴 가스라이팅(...) 훌훌 읽지 말고 제대로 공부해야 한다. 책을 어떻게 읽어야 할지 충분히 설명하고 있기 때문에 이대로만 읽어주면 된다. 책 옆에 필기도구는 필수다. 책에 낙서하는 걸 좋아하지 않는다면 연습장에라도 적어보도록 하자. 충분히 학습됐다고 보이면 누군가에게 설명한다고 가정하고 패턴에 대해서 이야기를 해보자.

     

     

     

    클래스 다이어그림을 통해 단계적으로 설명하기 때문에 용어적인 어려움만 없다면 따라가는데 어려움은 없을 것으로 보인다. 위에 이미지를 보면 알 수 있듯이 객체가 서로 어떻게 연결되어 있는지 아주 친절하게 설명되어 있다.

    책에는 무려 14가지 필살 패턴이 정리되어 있다. 독자에 따라서는 이미 알고 있는 패턴이 있을 수 있고, 경험적으로 개발은 해왔지만 패턴의 이름은 몰랐던 경우도 있을 수 있다. 자, 그럼 개발이 처음인 독자에게는 어떨까? 분명 이 책은 아주 훌륭한 책이다. 그리고 심지어 재밌다. 하지만 전제가 필요하다. 위에서 언급한 것처럼 용어적인 어려움이 없어야 하는데 거기에는 프로그래밍 언어 Java도 포함된다. 추가로 비즈니스 설계 경험이 있다면 조금은 읽기 수월할 거다. 혹은 센스가 있거나.

    막연하게 이 책에 있는 내용을 머릿속에 털어 넣으려고 하는 순간 지옥 같은 시간을 보내게 될지도 모른다. 혹시 책을 읽다가 어렵다면 그 부분은 훌훌 넘어가도 좋다. 나중에 경험이 더 쌓였을 때 다시 읽어보면 되니까. 책을 읽으며 아주 잠깐이라도 지루하게 느껴진다면 잠시 쉬어가시라. 이 책은 뇌가 충분히 말랑말랑해져 있는 상태에서 즐겁게 상상하며 봐야 하는데 잘못하면 눈만 따라가게 될 테니까.

     


    한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

  • 책소개


    몇년전 디자인 패턴을 공부하기 위해 처음 찾은 책은 그 유명한  GoF의 디자인패턴 이었다. 그때 당시를 생각하면 완독을 했었지만 몇 프로나 이해를 하고 봤을까 하는 생각이 든다. 그 후 계속해서 개발을 해오면서 자연스럽게 디자인 패턴을 코딩하는데 사용하였지만 디자인 패턴을 이용하여 만들어야지 또는 이런 문제는 이런 디자인 패턴을 써야지 하고 생각하면서 코딩을 하지는 않았다.

    그 이유를 이번에 나온 헤드 퍼스트 디자인 패턴(개정판)을 읽으면서 느낄 수 있었다. 나는 아직까지도 디자인 패턴을 이해하고 활용할 수 있을 정도로 정확히 알지는 못한다는 것이었다.

    이번에 나온 헤드 퍼스트 디자인 패턴(개정판)은 지금까지 개발한 코드를 생각하면서 읽게 되었는데 다시 한번 패턴을 이해하고 생각할 수 있게 해 준 고마운 책이었다.


    이 책에 대해 간략히 소개하자면 14가지의 패턴(전략, 옵저버, 데코레이터, 팩토리, 싱글턴, 커맨드, 어댑터, 파사드, 템플릿 메소드, 반복자, 컴포지트, 상태, 프록시, 복합)을 일상에서 발생하는 상황(고무오리, 커피공장, 리모컨, 피자 등등 )을 이용하여 설명하고 있다.

    기본적인 상황설명을 먼저 하고 그에 따른 클래스/객체를 만들고, 패턴을 설명하고, 다이어그램을 그리는 방식으로 진행하며 각 패턴에 따른 객체 지향 프로그래밍 원칙들을 설명한다.

    중간중간에 이해한 내용을 기반으로 직접 써가며(코딩이나 이해를 완성하기위한 퀴즈 등) 배울 수 있게 공간을 제공한다.

    책 말미에 디자인 패턴으로 생각하기나 14가지 패턴 외의 9가지 패턴을 간단히 설명하고 있는 부분도 설명되어 있다.

    이렇게 이책은 주요한 패턴은 상세한 상황을 기준으로 자세히 설명하고, 독자를 이해시키기 위한 장치를 여러 내용으로 보여 주며, 그외 패턴도 간략하게나마 설명을 하여 완성된 구성으로 이루어져 있다.

     

    총평


    지금은 구글링이나 다른 많은 책들에서 디자인 패턴에 대한 내용을 접할 기회는 많고 굳이 책까지 보면서 디자인 패턴을 이해할 필요가 있나하고 생각하는 분들이 많을 수 있으나 자바 초급자나 나 같이 디자인 패턴을 알고 있지만 정확히 이해하고 활용할 수 없었던 분들은 이 책을 꼭 추천 드리고 싶다. 현존하는 디자인 패턴관련 정보 중에 가장 쉽고 이해할 수 있게 해 줄 수 있을 거라 자신한다.

    단, 이 책 서두에서 밝히듯이 이 책은 디자인 패턴에 대한 이해를 돕는 책이지 코딩을 가르치는 책은 아님을 알아야 한다.


    ​​"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

     

  • 개발을 하다보면 언젠가 꼭 만나게 되는 디자인 패턴

    사수가 없어도 책으로도 쉽게 이해할 수 있도록 된 책 들중 원탑!

  •   제목에서 알 수 있듯이, 디자인 패턴 설명하고 있는 책이다. 다 다루는 것은 아니다. 실무에서 자주 사용하는 디자인 패턴들을 집중해서 다루고 있다. (14가지 패턴 : 전략패턴, 옵저버 패턴, 데코레이터 패턴, 팩토리 패턴, 싱글턴 패턴, 커맨트 패턴, 어댑터 패턴, 퍼사드 패턴, 템플릿 메소드 패턴, 반복자 패턴, 컴포지트 패턴, 상태 패턴, 프록시 패턴, 복합 패턴) 그 면이 오히려 좋았다. 책은 총 654페이지로 굉장히 두꺼운데, 그림이 대다수를 차지하고 있다. 일부로 가독성+학습을 위해서 책의 한페이지를 글로 꽉꽉 채우지 않은 것 같다.

      책이 IT 책치고는 굉장히 친절한 편이다. 책 쓰신 분이 뇌 과학에 관심이 많은 듯했다. 어찌되었든 이 책 앞단에서 말하는 것에 따르면, 두뇌는 사물보다는 사람에게 더 많은 관심을 가지기 때문에 책에서도 여러 사람이 등장하고, 사적인 대화체를 많이 사용했다고한다. 읽을 때보다 어떤 일을 실제로 할때 더 잘 배우고 더 잘 기억하기 때문에 연습문제도 많이 배치했고 양쪽 두뇌를 모두 사용할 수 있는 내용을 담았다고 한다.   여러 디테일을 신경쓰면서 열심히 만들으셨다고 한다. 덕분에 디자인 패턴책은 전공책스럽겠지라는 편견을 깨버리고, 의외로 재밌었다..

     

  • 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다
     
    개정판이 나왔다고 하길래 예전 헤드퍼스트 디자인패턴은 언제 나왔는지 찾아보니 와우 2005년도에 책이 나왔었네요. 
    헤드퍼스트 시리즈를 처음 접했을때 꽤 놀라왔습니다. 기술적인 책도 이렇게 쉽고 재밌게 읽힐 수 있구나 하는.
    만화책을 보는 듯한 큼지막한 일러스트에 대화형의 말풍선 문장들, 개인 노트에 포스트잇을 추가로 붙여놓은 거 같은 설명등으로
    워드문서를 읽는게 아닌 파워포인트 문서를 보는거 같은 느낌이 듭니다.
     
    이미 수많은 디자인 패턴 책, 온 오프라인 강좌등이 있습니다. 구현코드까지  올라온 것도 많아서 프로그래밍을 좀 해본 사람들은 쉽게 가져다가 사용할 수 있습니다. 하지만 설명의 방향이 일방적이죠.  어떤 문제를 해결하기 위해 그런 패턴이 만들어졌고 다른 비슷한 패턴들과의 차이가 무엇일지 충분히 이해하지 못했다면 다음에 비슷한 문제가 생겨도 스스로 고민해서 해결하기보다 검색해서 붙여넣기할 가능성이 높습니다.

    이 책은 사용자가 해결하고픈 고민이 생겼을때 (시니어개발자나 그 내용을 잘 아는 )동료를 찾아가 바로 옆자리에서 1:1로 페어프로그래밍하듯 대화하면서 문제를 해결해 나가는 식으로 구성되어 있습니다.
    사용자가 고민할때 독자도 그 문제를 어떻게 해결할 수 있을지 같이 고민합니다. 
    사용자는 이제 동료에게 자기가 생각하는 내용과 궁금한 내용들을 동료에게 얘기합니다. 기존 코드가 있고 동료가 개선사항을 얘기하면 사용자는 고민하고 추가 질문을 합니다. 그러면 또 동료가 그 질문에 대답을 해줍니다.
    이 과정은 체크박스 퀴즈, 크로스워드퀴즈 줄긋기 퀴즈, 주관식 문제등을 통해 독자도 같이 고민하면서 내용을 머릿속에 잘 기억할 수 있도록 해주고 있습니다.

    하나의 챕터가 끝날때마다 해당챕터의 글과 다이어그램등으로 내용을 정리해주고 있습니다.  뒤로 갈수록 다른 패턴들도 학습하기 때문에 비슷해 보이는데 차이를 아직 잘 모르는 패턴들이 나올 수 있습니다.  각 패턴들을 의인화시켜서 대화식으로 구성한 후 (패턴)본인의 성격을 확실하게 드러내주고, 다른 패턴들과의 논쟁을 통해 차이점을 잘 부각시켜주고 있습니다.

    예전에 나왔던 책과 구성이나 내용은 크게 달라지지 않았다고 느꼈지만
    초보 개발자든 경력이 오래된 개발자이든 각자의 입장에서 다시금 디자인패턴에 대해 정리하고 익힐 수 있는 좋은 책인 거 같습니다.

  • 이 책으로 디자인패턴을 공부를 처음 시작했는데
    가장 좋았던 점은 어떤 패턴인지 직관적으로 설명하는 것이 가장 좋았습니다.
    마치 패턴과 내가 대화를 하는듯한 느낌을 주는 느낌을 받았습니다.
    이건 여담인데 제가 회사 면접때 디자인 패턴을 공부한적이 있다고 했고 특정 패턴에 대해 설명한적이 있었습니다.
    그때 설명한 패턴이 어뎁터 패턴이었습니다. 저는 그 회사에 합격을 해서 지금도 잘 다니고 있습니다.
    이것을 갑자기 말한 이유는 아마 제 합격이 가능한것은 이 책의 지분이 어느정도 있다고 생각합니다.
    실제로 입사를 했을때 보다 먼저 구입을 하였습니다.

    근데 이 책의 가장 큰 단점이 있었는데 그건 바로 너무  책 표지가 올드하다는 점입니다. 
    제가 이 책을 처음 구입한것이 2010년 이후였던것으로 감안해도 너무 표지가 올드하였습니다.
    책 내용이 아무리 좋아도 선뜻 책 구입이 망설여지는 그런 표지였습니다.
    아마 이 책을 구입하는 대부분 사람들이 이 책이 얼마나 좋은지에 대해 소문을 들었기 때문에 이 책을 구입을 해도 과언이 아니라고
    확신을 가질 수 있습니다.

    그러다 새롭게 바뀐 이 책은 위에서 말한 단점이 하나도 보이지 않았습니다.
    더 깔끔해졌고 읽기 편해졌습니다. 확실히 가독성이 높아졌다는 것이 느껴졌습니다.
    전체적으로 크게 바뀐 부분은 없었지만 그 전보다 훨씬 읽기 편하게 변한것이 진심으로 느껴졌습니다.

부록/예제소스
자료명 등록일 다운로드
DOWNLOAD 예제소스 2022-05-11 다운로드
결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

도서판매처

리뷰쓰기

닫기
* 도서명 :
헤드 퍼스트 디자인 패턴(개정판)
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
헤드 퍼스트 디자인 패턴(개정판)
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
헤드 퍼스트 디자인 패턴(개정판)
구입처*
구입일*
부가기호*
부가기호 안내

* 인터넷 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 한빛 웹사이트에서 구입한 도서는 자동 인증됩니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실