Head First Design Pattern
Publish date: 2008-11-30Tags: 객체지향 설계 head-first
https://www.yes24.com/Product/Goods/108192370
2판에서 달라진점
- 페이지별 제목이 큰 흐름 맥락에서의 목적을 드러내는 방식으로 바뀌고 기존 제목은 작게 표시
- 예: 바뀌는 부분을 찾아내봅시다 -> 최첨단 피자코드 만들기(바뀌는 부분을 찾아내봅시다)
- 복습하거나 중간에 있는 내용을 찾아보기에는 더 편해진 느낌이다.
- 낱말퀴즈가 전반적으로 바뀌어 있음.
2장 옵져버 패턴
java.util.Observer
를 쓰던 예제가 2판에서는 직접 정의한 인터페이스를 쓰도록 변경- Java8이후에는
java.util.Observer
등이 거의 안 쓰인다는 설명도 추가 됨.
- Java8이후에는
5장 싱글턴 패턴
- Q&A에서 2가지 질문 추가 (p218)
- 리플렉션, 직렬화 역질력화에서의 문제는 없는지
- 느슨한 결합 원칙에 위배되지 않는지
- Enum을 이용한 싱글턴 구현 소개 (p219)
6장 커맨드 패턴
- 구상 커맨트 객체를 람다 표현식으로 바꾸는 예제 추가 (p250)
- Swing 예제로도 커맨드 패턴 설명 (p265, p270)
7장 템플릿 메서드
- Applet 예제를
AbstractList
를 활용하는 예제로 대체 (p343)
8장 반복자 패턴, 컴포지트 패턴
- Iterable 인터페이스, 향상된 for 구문에 대한 설명 추가 (p377-379)
- 복합 반복자, 널 반복자 등의 내용은 삭제됨 (1판의 p406~p413)
- 패턴과 설명 연결 퀴즈에서 스테이트 패턴이 빠지고 전략 패턴이 들어감(1판 p417, 2판 p409)
11장 프록시 패턴
- 동적 클래스 다운로딩 방식 설명 삭제(1판 p486)
- 인터페이스 이름 변경
PersonBean
->Person
(1판 p513-514, p517, 2판 p504-505, p508) - Q&A에서 RMI관련 질문 2개 삭제(1판 p524, 2판 p514)
정리
7장 템플릿 메서드
Array.sort()
도 템플릿 메서드의 예제로 나와 있다. 상속 관계가 없어도 템플릿 메서드라고 부를 수 있는 것인가?- (p341) 이는 온전한 템플릿 메서드라고는 할 수는 없지만 기본 정신을 충실히 따르고 있다고 설명하고 있다.
AbstractList
를 상속하면 추상 메서드인get()
과size()
메서드를 재정의 해줘야함. 이 둘을 참조하는subList()
가 템플릿 메서드.
12장 복합 패턴
- MVC를 복합패턴으로 소개 : 전략 + 컨포지트 + 옵져버
- MVC와 웹 환경 설명과 Servlet + JSP 예제 삭제 됨 (1판 p587~596)
- 대신 웹 환경에 대한 간단한 설명 추가 (2판 p578)