책소개
개발자에게 패턴이 기본이라면
실무에 적용된 진짜를 봐야 한다
자바 개발자라면 디자인 패턴은 반드시 알아야 한다. 자바 EE 7에는 싱글톤, 팩토리, 장식자, 옵저버, 퍼사드 같은 GoF의 클래식 패턴은 물론 모델-뷰-컨트롤러(MVC), 의존성 주입, 데이터 접근 객체(DAO), 데이터 전송 객체(DTO) 같은 다양한 패턴이 포함되어 있다. 옛 버전 자바 EE와 스프링을 거쳐 현대적으로 다듬어진 자바 EE 7에 포함된 다양한 패턴을 학습하면서 실무에 적용된 디자인 패턴의 모습을 엿볼 수 있다.
이 책의 목적은 유명한 GoF 패턴 책에 나온 고전 디자인 패턴을 설명하고 이들을 최신 자바 EE 6, 7에 맞게 업데이트하는 것이다. 각 장마다 한 패턴씩 옛 방식으로 구현한 다음 자바 EE로 구현하는 방법을 설명한다. 두 가지 방법으로 구현한 예제 코드를 모두 수록했고 저자의 체험담을 통해 패턴을 이용(또는 오용)하는 실제 사례를 들려준다. 각 장 패턴마다 찬성/반대 의견과 용례를 살펴보고 패턴 이해도를 점검하는 연습 문제로 마무리 할 수 있다.
목차
1장 디자인 패턴이란?
__1.1 디자인 패턴이란?
____1.1.1 패턴의 유래와 필요성
____1.1.2 패턴의 실제
__1.2 디자인 패턴 입문
__1.3 엔터프라이즈 패턴
____1.3.1 자바에서 엔터프라이즈 자바로
____1.3.2 엔터프라이즈 자바 패턴의 출현
____1.3.3 디자인 패턴과 엔터프라이즈 패턴의 차이점
____1.3.4 평범한 옛 디자인 패턴이 자바 EE를 만나다
____1.3.5 안티패턴이 되다
__1.4 정리하기
2장 자바 EE 기초
__2.1 다중 티어 아키텍처
__2.2 클라이언트 티어
__2.3 미들 티어
____2.3.1 웹 레이어
____2.3.2 비즈니스 레이어
__2.4 EIS 티어
__2.5 자바 EE 서버
__2.6 자바 EE 웹 프로파일
__2.7 자바 EE 핵심 원리
__2.8 설정보다 관례
__2.9 컨텍스트와 의존체 주입
__2.11 정리하기
2부 자바 EE 디자인 패턴 구현
3장 퍼사드 패턴
__3.1 퍼사드란?
____3.1.1 퍼사드 클래스 다이어그램
__3.2 일반 자바 코드로 퍼사드 패턴을 구현
__3.3 자바 EE로 퍼사드 패턴을 구현
____3.3.1 무상태성 빈을 지닌 퍼사드
____3.3.2 상태성 빈을 지닌 퍼사드
__3.4 언제, 어디에 사용하나?
__3.5 정리하기
4장 싱글톤 패턴
__4.1 싱글톤이란?
____4.1.1 싱글톤 클래스 다이어그램
____4.1.2 일반 자바 코드로 싱글톤 패턴을 구현
__4.2 자바 EE로 싱글톤 패턴을 구현
____4.2.1 싱글톤 빈
____4.2.2 시동 시 싱글톤을 사용
____4.2.3 시동 순서를 결정
____4.2.4 동시성 관리
__4.3 언제, 어디에 사용하나?
__4.4 정리하기
5장 의존체 주입과 CDI
__5.1 의존체 주입이란?
__5.2 일반 자바 코드로 DI를 구현
__5.3 자바 EE로 DI를 구현
____5.3.1 @Named 애너테이션
____5.3.2 컨텍스트/의존체 주입(CDI)
____5.3.3 CDI 대 EJB
____5.3.4 CDI 빈
____5.3.5 @Inject 애너테이션
____5.3.6 컨텍스트와 스코프
____5.3.7 명명법과 EL
____5.3.8 CDI 빈은 JSF의 기반 빈
____5.3.9 한정자
____5.3.10 대안자
____5.3.11 스테레오타입
____5.3.12 CDI로 움직이는 패턴들
__5.4 정리하기
6장 팩토리 패턴
__6.1 팩토리란?
__6.2 팩토리 메서드
____6.2.1 일반 자바 코드로 팩토리 메서드를 구현
__6.3 추상 팩토리
____6.3.1 일반 자바 코드로 추상 팩토리를 구현
__6.4 자바 EE로 팩토리 패턴을 구현
____6.4.1 CDI의 진면목
__6.5 언제, 어디에 사용하나?
__6.6 정리하기
7장 장식자 패턴
__7.1 장식자란?
____7.1.1 장식자 클래스 다이어그램
__7.2 일반 자바 코드로 장식자 패턴을 구현
__7.3 자바 EE로 장식자 패턴을 구현
____7.3.1 XML 설정 없는 장식자
__7.4 언제, 어디에 사용하나?
__7.5 정리하기
8장 애스팩트지향 프로그래밍(인터셉터)
__8.1 애스팩트 지향 프로그래밍이란?
__8.2 일반 자바 코드로 AOP를 구현
__8.3 자바 EE의 애스팩트, 인터셉터
____8.3.1 인터셉터의 생애 주기
____8.3.2 기본-레벨 인터셉터
____8.3.3 인터셉터 순서
____8.3.4 CDI 인터셉터
__8.4 언제, 어디에 사용하나?
__8.5 정리하기
9장 비동기
__9.1 비동기 프로그래밍이란?
____9.1.1 비동기 패턴
__9.2 일반 자바 코드로 비동기 패턴을 구현
__9.3 자바 EE로 비동기 프로그래밍을 구현
____9.3.1 비동기 빈
____9.3.2 비동기 서블릿
__9.4 언제, 어디에 사용하나?
__9.5 정리하기
10장 타이머 서비스
__10.1 타이머 서비스란?
__10.2 자바 EE로 타이머를 구현
____10.2.1 자동 타이머
____10.2.2 프로그램 타이머
____10.2.3 타이머 표현식
____10.2.4 트랜잭션
__10.3 정리하기
11장 옵저버 패턴
__11.1 옵저버란?
____11.1.1 옵저버 패턴
____11.1.2 옵저버 클래스 다이어그램
__11.2 일반 자바 코드로 옵저버 패턴을 구현
__11.3 자바 EE로 옵저버 패턴을 구현
__11.4 언제, 어디에 사용하나?
__11.5 정리하기
12장 데이터 접근 패턴
__12.1 데이터 접근 패턴이란?
____12.1.1 데이터 접근 클래스 다이어그램
__12.2 데이터 접근 패턴 개요
____12.2.1 데이터 전송 객체 패턴
____12.2.2 자바 퍼시스턴스 아키텍처 API와 객체 관계 매핑
__12.3 자바 EE로 데이터 접근 패턴을 구현
____12.3.1 타입-안전한 DAO 구현체
__12.4 언제, 어디에 사용하나?
__12.5 정리하기
13장 REST형 웹 서비스
__13.1 REST란?
__13.2 REST의 6대 제약
____13.2.1 클라이언트-서버
____13.2.2 일관된 인터페이스
____13.2.3 무상태
____13.2.4 캐시 가능
____13.2.5 계층화 시스템
____13.2.6 코드 온 디맨드
__13.3 REST API의 리처드슨 성숙도
____13.3.1 레벨 0: POX(Plain Old XML, 옛날 흔했던 XML) 범벅
____13.3.2 레벨 1: 리소스
____13.3.3 레벨 2: HTTP 동사
____13.3.4 레벨 3: 하이퍼미디어 제어
__13.4 REST형 API 디자인
____13.4.1 리소스 명명
____13.4.2 동사가 아닌 명사로
____13.4.3 자기 서술형으로
____13.4.4 단수 아닌 복수형으로
____13.4.5 HTTP 메서드
____13.4.6 GET
____13.4.7 POST
____13.4.8 PUT
____13.4.9 DELETE
__13.5 실전 REST
____13.5.1 명사 users
____13.5.2 명사 topics와 posts
__13.6 자바 EE로 REST를 구현
__13.7 HATEOAS
__13.8 언제, 어디에 사용하나?
__13.9 정리하기
14장 MVC 패턴
__14.1 MVC 패턴이란?
____14.1.1 MVC 타입
__14.2 일반 자바 코드로 MVC 패턴을 구현
__14.3 자바 EE로 MVC 패턴을 구현
__14.4 페이스 서블릿
__14.5 FACESSERVLET을 응용한 MVC
__14.5 언제, 어디에 사용하나?
__14.6 정리하기
15장 나머지 자바 EE 패턴
__15.1 웹소켓이란?
__15.2 메시지 중심 미들웨어란?
__15.3 마이크로서비스 아키텍처란?
____15.3.1 모놀리식 아키텍처
____15.3.2 확장성
____15.3.3 여러 서비스로 해체
____15.3.4 마이크로서비스의 좋은 점
____15.3.5 인생에 쉬운 게 있나요
____15.3.6 결론
__15.4 안티패턴
____15.4.1 우버 클래스
____15.4.2 라자냐 아키텍처
____15.4.3 콜롬버스
____15.4.4 진짜 도움되는 친구
____15.4.5 첨단이 최고야
____15.4.6 유틸리티맨
3부 총정리
16장 디자인 패턴의 좋은 점, 나쁜 점, 고약한 점
__16.1 좋은 점: 성공을 향한 패턴
__16.2 나쁜 점: 패턴의 과용 및 오용
__16.3 …그리고 고약한 점
__16.4 정리하기