본문 바로가기

IT 살이/04. 기술 - 아키텍처

책상정리#8-Design Patterns

개발에 사용되는 패턴이긴 하지만, 디자인 패턴에서 사용하는 관점과 개념에 익숙해지면 아키텍처를 설계할때도 도움이 된다. 



Head First Design Patterns

에릭 프리먼 외


디자인 패턴 소개

1. 디자인 패턴의 세계에 오신 것을 환영합니다.

   SimUDuck

   조는 상속에 대해서 생각을 해 봅니다.

   인터페이스는 어떨까요?

   소프트웨어 개발에 있어서 바뀌지 않는 것

   바뀌는 부분과 그렇지 않은 부분 분리하기

   오리의 행동 디자인

   Duck 코드 테스트

   동적으로 행동을 지정하는 방법

   캡슐화된 행동을 큰 그림으로 바라봅시다.

   "A는 B이다" 보다 "A에는 B가 있다"가 나을 수 있습니다.

   스트래티지 패턴

   전문 용어의 위력

   디자인 패턴을 어떻게 사용하나요?

   디자인 도구 상자

   연습문제 정답


옵저버 패턴

2. 객체들한테 연락하기

   기상 모니터링 애플리케이션 개요

   옵저버 패턴을 만나봅시다

   출판사+구독자=옵저버 패턴

   5분 드라마: 옵저버와 주제

   옵저버 패턴의 정의

   느슨한 결합의 위력

   기상 스테이션 설계

   기상 스테이션 구현

   자바 내장 옵저버 패턴 사용하기

   java.util.Observable의 단점

   디자안 도구상자

   연습문제 정답


데코레이터 패턴

3. 객체 꾸미기

   스타버즈에 오신 것을 환영합니다.

   OCP( Open-Closed Principle )

   데코레이터 패턴

   데코레이터 패턴의 정의

   Beverage 클래스를 장식해 봅시다

   스타버즈 코드를 만들어 봅시다

   데코레이터가 적용된 예: 자바 I/O

   자바 I/O 데코레이터

   디자인 도구 상자

   연습문제 정답


팩토리 패턴

4. 객체지향 빵 굽기

   "new"는 "구상 객체"를 뜻합니다.

   객체마을 피자

   객체 생성 부분을 캡슐화합시다

   간단한 피자 팩토리를 만들어 봅시다

   간단한 팩토리 정의

   피자 가게 프레임워크

   서브클래스에서 결정되는 것

   PizzaStore를 만듭시다

   팩토리 메소드 선언

   팩토리 메소드 패턴 만난기

   병렬 클래스 계층구조

   팩토리 메소드 패턴의 정의

   심하게 의존적인 PizzaStore

   객체 의존성 살펴보기

   의존성 뒤집기 원칙

   그동안 피자 가게에서는...

   원재료군

   원재료 공장 만들기

   추상 팩토리 살펴보기

   무대뒤에서

   추상 팩토리 패턴 정의

   팩토리 메소드 패턴과 추상 팩토리 패턴

   디자인 도구 상자

   연습문제 정답


싱글턴 패턴

5 세상에서 단 하나뿐인 특별한 객체

   유일무이한 객체

   리틀 싱글턴

   고전적인 싱글턴 패턴 구현법

   싱글턴의 심경 고백

   초콜릿 공장

   싱글턴 패턴의 정의

   허쉬, 문제가 생겼다

   JVM이 되어 봅시다

   멀티스레딩 문제 해결 방법

   싱글턴 관련 Q&A

   디자인 도구 상자

   연습문제 정답


커맨드 패턴

6 호출캡슐화

   홈 오토메이션

   리모컨

   클래스들을 살펴 봅시다

   그동안 식당에서는...

   서로 어떤 식으로 연관되는지 조금 더 자세히 봅시다

   객체마을 식당 등장인물 및 그 역할

   객체마을 식당과 커멘드 패턴

   첫 번째 커맨드 객체

   커맨드 패턴과 리모컨

   리모컨 코드

   리모컨 테스트

   API 문서를 만들어 봅시다.

   작업취소 기능을 구현할 때 상태를 사용하는 방법

   리모컨에 파티 모드를...

   매크로 커맨드 사용 방법

   커맨드 패턴 활용: 요청을 큐에 저장하기

   커맨드 패턴 활용: 요청을 로그에 기록하기

   디자인 도구 상자

   연습문제 정답


어댑터 패턴과 퍼사드 패턴

7 적응시키기

   어댑터

   객체지향 어댑터

   어댑처 패턴

   어댑처 패턴의 정의

   객체와 클래스 어댑터

   오늘의 주제: 객체 어댑처와 클래스 어댑터

   어댑처 실전 예제

   Enumeration을 Iterator에 적응시키기

   오늘의 주제: 데코레이터 패턴과 어댑터 패턴

   홈 시어터

   전등, 카메라, 퍼사드!

   홈 씨어터 퍼사드 구축

   퍼사드 패턴의 정의

   최소 지식 원칙

   다자인 도구 상자

   연습문제 정답


템플릿 메소드 패턴

8 알고리즘 캡슐화

   커피 및 홍차 클래스 만들기

   커피 및 홍차 추상화

   디자인에 대해 좀더 생각해 봅시다...

   prepareRecipe()추상화

   한번 정리해 봅시다...

   템플릿 메소드 패턴

   차를 만들어 볼까요?

   템플릿 메소드로부터 무엇을 얻을 수 있었나요?

   템플릿 메소드 패턴의 정의

   코드 탐구

   템플릿 메소드와 후크

   후크 활용

   한번 테스트해 볼까요?

   헐리우드 원칙

   헐리우드 원칙과 템플릿 메소드 패턴

   야생의 템플릿 메소드

   템플릿 메소드를 이용해서 정렬하기

   오리를 정렬해야 합니다...

   Duck 객체 대소 비교

   오리 정렬 메이킹 필름

   스윙 프레임

   애플릿

   오늘의 주제: 템플릿 메소드 패턴과 스트래티지 패턴

   디자인 도구 상자

   연습문제 정답


이터레이터와 컴포지트 패턴

9 잘 관리된 컬렉션

   객체마을 식당과 객체마을 팬케이크하우스 합병

   루와 멜의 메뉴 구현법

   반복을 캡슐화할 수 있을까요?

   이터레이터 패턴을 만나 봅시다

   DinerMenu에 Iterator를 추가합시다

   디자인 살펴보기

   java.util.Iterator 적용하기

   한번 정리해볼까요?

   이터레이터 패턴의 정의

   단일 역할 원칙

   반복자와 컬렉션

   자바5에서의 반복자와 컬렉션

   괜찮을 것 같았는데...

   컴포지트 패턴의 정의

   컴포지트 패턴을 이용한 메뉴 디자인

   메뉴 구현

   이터레이터

   널 반복자

   이터레이터 패턴과 컴포지트 패턴의 조화

   디자인 도구 상자

   연습문제 정답


스테이트 패턴

10 객체의 상태

   상태 구현 방법?

   상태 기계의 기초

   뽑기 기계 구현

   이럴 줄 알았다니가요... 변경 요청 들어왔습니다.

   지저분한 상태

   State 인터페이스 및 클래스 정의

   상태 클래스 구현

   뽑기 기계 수정

   스테이트 패턴의 정의

   스테이트 패턴 vs. 스트래티지 패턴

   정상점 점검

   하마터면 그냥 넘어갈 뻔 했네요

   디자인 도구 상자

   연습문제 정답


프록시 패턴

11 객체 접근 제어

   뽑기 기계 모니터링

   원격 프록시의 역할

   RMI의 기초

   뽑기 기계 원격 프록시

   무대 뒤의 원격 프록시

   프록시 패턴의 정의

   가상 프록시

   CD 커버 뷰어 가상 프록시 디자인

   무대 뒤의 가상 프록시

   자바 API 프록시

   5분 드라마: 주 객체 보호

   동적 프록시 만들기

   프록시 동물원

   디자인 도구상자

   연습문제 정답


컴파운드 패턴

12 패턴들로 이루어진 패턴

   컴파운드 패턴

   오리와의 재회

   어댑터 추가

   데코레이터 추가

   팩토리 추가

   컴포지트 및 이터레이터 패턴 추가

   옵저버 패턴 추가

   패턴 정리

   클래스 다이어그램

   MVC 송

   MVC와 디자인 패턴

   패턴 안경으로 MVC 바라보기

   MVC를 이용한 박자 조절

   모델

   뷰

   컨트롤러

   스트래티지 패턴 탐색

   모델 적응시키기

   HearController 준비

   MVC와 웹

   디자인 패턴과 모델 2

   디자인 도구 상자

   연습문제 정답


패턴과 함께 하는 행복한 삶

13 실전에서의 디자인 패턴

   객체마을 가이드

   디자인 패턴의 정의

   디자인 패턴의 정의-조금 더 자세히

   포스가 함께 하기를...

   패턴 카탈로그

   패턴을 찾는 방법

   디자인 패턴 작가가 되고 싶으신가요?

   디자인 패턴 분류하기

   패턴으로 생각하기

   패턴을 대하는 마음가짐

   전문 용어의 위력을 잊지 맙시다.

   용어를 공유하는 다섯 가지 방법

   4인방과 함께 하는 객체마을 여행

   패턴을 찾아 떠나는 여행...

   기타 디자인 패턴 관련 자료

   패턴 동물원

   사악한 안티 패턴 섬멸하기

   디자인 도구상자

   객체마을을 떠나면...


부록

14 기타 패턴

   브리지 패턴

   빌더 패턴

   역할 사슬 패턴

   플라이웨이트 패턴

   미이에이터 패턴

   메멘토 패턴

   프로토타입 패턴

   비지터 패턴