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

한빛출판네트워크

Elemental Design Patterns : 객체지향과 디자인 패턴의 연결 고리

한빛미디어

번역서

절판

  • 저자 : 제이슨 맥컴 스미스
  • 번역 : 김지원
  • 출간 : 2013-05-02
  • 페이지 : 364 쪽
  • ISBN : 9788968480140
  • 물류코드 :2014
  • 초급 초중급 중급 중고급 고급
4점 (4명)
좋아요 : 27

디자인 패턴은 기술인가, 과학인가?

 

디자인 패턴을 소프트웨어 공학의 구성요소로 볼 수 있는가? 이 분야에 패턴이 적합한지 판단할 수 있는가? 각 패턴이 얼마나 서로 어울리는지 장담할 수 있는가? 패턴은 가져다 쓰기만 하면 되는 냉동식품인가?
패턴을 종합적인 방법으로 접근할 수 없다면 우리는 이에 대한 답을 내릴 수 없다. 엘리멘틀 디자인 패턴은 패턴을 네 가지 카테고리로 나누며, 패턴을 종합적인 관점에서 볼 수 있는 도구를 제공한다.

 

 

디자인 패턴이 언어의 결점을 보완한다고 믿는가?

 

언어에 따라 쉽게 구현할 수 있는 패턴이 있고, 이해하기 어려운 패턴이 있다고 어떤 언어가 더 우월한 것은 아니다. 구체적인 개념이 언어 자체 기능으로 들어 있든 구체적인 기능을 개발자가 직접 구현해야 하든, 이는 디자인 패턴과 무관하다. 소프트웨어 설계와 구현은 별개이다. 설계는 개념이고, 개념을 특정 언어로 구체화하는 작업이 구현이다. 다른 언어에서 표현되는 차이를 두고 근본적인 차이라고 오해해서는 안 된다. 이 책에서는 C, C++, Java, Objective-C 등의 다양한 언어로 패턴을 설명한다.

 

 

디자인 패턴은 암기해야 하는가?

 

패턴은 문제의 맥락에서 변형하고, 구부려서 틀에 맞추고, 특정 집단의 필요성에 맞출 수 있게 만들어졌다. 원리를 이해하지 못하고 패턴 예제를 그대로 적용하면 잘못된 설계를 저지르기 쉽다. 이 책에서는 원리와 개념을 중심으로 패턴을 설명한다.

 

 

어떤 독자를 위한 책인가?

  • 디자인 패턴을 배우고 사용했으나 원리를 정확하게 이해하지 못하는 독자
  • 디자인 패턴을 습관처럼 사용했지만 응용하지 못하는 독자
  • 디자인 패턴을 깊이 이해하고 싶은 독자

 

제이슨 맥컴 스미스 저자

제이슨 맥컴 스미스

노스 캐롤라이나 대학에서 컴퓨터 과학 전공 박사 학위를 받았고 수년간 물리학 시뮬레이션 기사 겸 컨설턴트로 일했으며 물리학과 수학 전공으로 복수 이학사 학위를 취득했다. 주요 프로젝트로는 수중 음파탐지기와 해양 환경 시뮬레이션, 전자공학 시뮬레이션, 민간/군용 항공기 시뮬레이션, 실시간 그림 교육 시스템 등이 있다. 이후 그가 맡은 SPQR(패턴 질의/인식 시스템) 프로젝트의 일부가 엘리멘틀 디자인 패턴의 모체가 됐다. UNC-CH에서 이뤄진 연구에 대해 두 개의 미국 특허(SPQR 관련 기술, FaceTop 분산 문서 협업 시스템)를 획득했다.

 

김지원 역자

김지원

여가 시간에는 플래시 아이템 제작, 컴퓨터 음악 작곡 등을 하며, 때로는 구성이 잘 된 웹디자이너들의 사이트를 탐색하면서 아이디어를 구상하기도 한다. 뜨거운 감자인 웹 표준에 관해서도 큰 관심을 갖고 있으며, 이와 관련해서 유용한 보충 자료를 수집해 블로그를 통해 제공할 예정이다. 최근 우리말 번역에 있어서 기술 용어의 일관성에 대해 고민하고 있다. 건국대학교 신소재공학과를 졸업한 후, 기술문서, 매뉴얼 등을 위주로 번역해왔으며 유비쿼터스 IT 관련 논문들의 번역 작업에 참여했다. 2004년부터 현재까지 정보기술, 건축, 화학, 디자인, 사운드 등의 분야에서 프리랜서 번역가로 활동 중이다.

1장 디자인 패턴 개론 
     1.1 집단적 미신 
     1.2 기술인가 과학인가 
        패턴은 암기해야 한다는 관점 
        패턴이 언어에 종속된다는 관점 
        미신을 버리고 과학으로 

2장 엘리멘틀 디자인 패턴 
     2.1 유래와 배경 
     2.2 어디에, 어떻게, 왜 
        데커레이터 패턴 해부하기 
        심도 있는 주제들 
        문맥 
        디자인 스페이스 
     2.3 주요 EDP 
     2.4 이 장의 포인트 

3장 패턴 인스턴스 표현법, PIN 
     3.1 기본 표현법 
     3.2 PIN 박스 
        단순 PIN 박스 
        표준 PIN 박스 
        확장 PIN 박스 
        이층 PIN 박스와 다중 연결성 
        박피와 통합 
     3.3 이 장의 포인트 

4장 EDP 활용하기 
     4.1 패턴의 합성 
        동위원소 
     4.2 데커레이터 패턴 새로 만들기 
     4.3 리팩토링 
     4.4 전체 구도 
     4.5 부록은 왜 읽어야 하나 
     4.6 고급 주제 3가지 
        집중적인 문서화와 교육 
        지표 
        절차적 분석 
     4.7 이 장의 포인트 

5장 EDP 카탈로그 
      객체 생성 Create Object 
      가져오기 Retrieve 
      상속 Inheritance 
      추상 인터페이스 Abstract Interface 
      위임 Delegation 
      리디렉션 Redirection 
      병합 Conglomeration 
      되부름 Recursion
      메서드 되돌림 Revert Method
      메서드 확장 Extend Method 
      병합 위임 Delegated Conglomeration 
      되부름 리디렉션 Redirected Recursion 
      위임 신탁 Trusted Delegation 
      리디렉션 신탁 Trusted Redirection 
      위임 대행 Deputized Delegation 
      리디렉션 대행 Deputized Redirection 

6장 중간 합성 패턴 
      약정 이행 메서드 Fulfill Method 
      새 객체 가져오기 Retrieve New 
      공유 객체 가져오기 Retrieve Shared 
      객체화 클래스 Objectifier 
      객체 되부름 Object Recursion 

7장 GoF 합성 패턴 
     7.1 생성 패턴 
        추상 팩토리 Abstract Factory 
        팩토리 메서드 Factory Method 
     7.2 구조 패턴 
        데커레이터 Decorator 
        프록시 Proxy 
     7.3장 기능 패턴 
        책임 연쇄 Chain of Responsibility 
        템플릿 메서드 Template Method 
     7.4 이 장의 포인트 

부록 A. Rho 계산법( -calculus) 
     A.1 의존 연산자 
     A.2 이행성과 동위원소 
     A.3 유사도 
     A.4 EDP 공식 
     A.5 합성 공식과 환원 공식 
     A.6 패턴 인스턴스 표현법과 역할 
     A.7 EDP 정의 
        객체 생성 Create Object 
        가져오기 Retrieve 
        상속 Inheritance 
        추상 인터페이스 Abstract Interface 
        위임 Delegation 
        리디렉션 Redirection 
        병합 Conglomeration 
        되부름 Recursion 
        메서드 되돌림 Revert Method 
        메서드 확장 Extend Method 
        병합 위임 Delegated Conglomeration 
        되부름 리디렉션 Redirected Recursion 
        위임 신탁 Trusted Delegation 
        리디렉션 신탁 Trusted Redirection 
        위임 대행 Deputized Delegation 
        리디렉션 대행 Deputized Redirection 
     A.8 중간 합성 패턴 정의 
        약정 이행 메서드 Fulfill Method 
        새 객체 가져오기 Retrieve New 
        공유 객체 가져오기 Retrieve Shared 
        객체화 클래스 Objectifier 
        객체 되부름 Object Recursion 
     A.9 GoF 합성 패턴 정의 
        추상 팩토리 Abstract Factory 
        팩토리 메서드 Factory Method 
        데커레이터 Decorator 
        프록시 Proxy 
        책임 연쇄 Chain of Responsibility 
        템플릿 메서드 Template Method

디자인 패턴이 이슈가 된지는 참 오래된거 같다.

비슷한 구조이면서 그 상황에 따라 만들어지는 여러 패턴들이 생기면서
처음 GOF 패턴이 나온 이후 지금은 수백개가 넘는 디자인패턴이 나와있다.

항상 이런 저런 디자인패턴 책을 보면서 그 안에 비슷한 패턴에서 풀어져 나가는걸
보면서 이 구조만 알면 되지 멀..
하던 때도 있었다.

디자인패턴의 이름과 구조를 외우고 무조건식으로 해당 패턴을 상황에 적용시키는 경우를 종종 보면서
디자인 패턴책을 공부하는 사람들에게 무조건식으로 외우는건 위험하다고 얘기를 했던적도 있다.
물론 난 디자인패턴의 이름들을 아직도 잘 기억못한다.
머리가 나빠서 -_-;

이 책은 상황에 따라 변경되어 만들어져 가는 디자인패턴에 앞서
그 패턴을 구성하는 기본 구성 원소를 객체,필드,메소드,타입 의 4가지로 나누어
그 4가지로 기본 패턴을 정의하여

상황에 따라 그 기본패턴의 조합으로 패턴을 만든다는 내용인거 같다.

이 책을 읽으면서
디자인 패턴에 앞서 그러한 기본 패턴을 정립하여 그 기본패턴으로 풀어나간다는
생각이 참 흥미롭고 재미있었다.
왜 이런 생각을 못했을까 하는 생각도 들었던듯 하다.

다만 아쉬운 점은
책에서 설명하는 EDP 에 대해서 뒤에서 다루지만
앞단에서 해당하는 EDP 로 설명을 해야 하기에
뒤에서 다룰 내용을 앞에서 어느정도 설명해야 하는 구성에서
그러한 내용이 쉽게 이해되도록 구성되진 않은거 같다.

해당하는 EDP 에 대해서 프로젝트에서 처음 그 생각을 구성하게 되었다는 내용을 하면서
해당하는 프로젝트로 만들어진 SPQR 시스템에 대해서 계속 언급하는 것도
좀 읽는데 방해가 된 듯 하다.

기본 패턴을 정립한다는건 좋은 내용 같은데
그 기본패턴을 정리하는 과정에서 오히려 그 기본패턴도 더
많아지는게 아닌가 하는 생각도 들었다.

여러 아쉬운 점이 있었지만

기본패턴을 정립하여 풀어나간다는 내용이 참 흥미로웠다.

처음 접했을때 "흔한" 디자인 패턴 관련 책인가 싶었다. 다양한 디자인 패턴을 소개하는 정도일 것이라고 생각 했다.



그러나, 곧 생각은 바뀌게 되었다. 디자인 패턴을 다른 관점으로 보는 방법을 소개하고, 그 관점으로 디자인 패턴을 소개 한다. 구글링을 해보니 이 새로운 관점은 오래전에 발생되었던것 같다. 해외 개발자 커뮤니티에서 관심을 가지지 않는 내 자신에 대해, 그리고 이제서야 이 책이 번역되서 나오고 이제서야 읽게 되는 것인지 후회스럽다.

초반에 Elemental Design Patterns (이하 EDP) 에 대한 소개로 부터 시작하는데, EDP는 단지 책 제목이 아니다. 디자인 패턴을 새롭게 바라보는 관점에 대한 이름이다.

이 책 EDP는 원소 수준에서 디자인 패턴을 보는 방법을 알려 준다. 그리고 그 원소들이 결합된 아미노산 수준에서, 아미노산들이 결합하여 단백질의 수준에서 디자인패턴을 보는 방법도 알려 준다.

디자인 패턴을 새로운 관점으로 볼 수 있게 되니 내가 작성한 코드에서 사용된 디자인 패턴들의 장단점들이 보이고 더 나은 패턴들을 적용할 수 있게 되었다.

프로젝트 초기에 2주 이상 걸릴 것이라고 포기했던 디자인 패턴들을 새로운 관점으로 적용해 보았다. 2일 정도밖에 걸리지 않았다. 지레 겁을 먹었던 것이다. 중복 코드들의 증가의 위협으로 인해 더 이상 "날림" 디자인을 유지할 수 없었던 까닭이기도 하였다.

이 책은 다른 디자인 패턴 책에 비해 읽기가 어렵다. 새로운 관점을 요구하기 때문이다. 그래서 몇개의 챕터는 3번 정도를 읽고 나서야 내 머리에 각인이 가능 하였다.

책이 어려웠던만큼 이 책을 어떻게 소개해야 하는지도 역시 어렵게 느껴진다.

(소개 순서는 챕터의 순서와 관계 없다)

먼저, 디자인 패턴에 대한 기존 개발자간에 형성된 집단적 오해나 미신에 대한 근거를 제시하고, 이를 바꿀 것을 요구한다.

두번째, 소스 코드나 UML을 통해 디자인 패턴을 발견, 분류, 분해 하는 방법을 알려준다.

세번째, Pattern Instance Notation (PIN)을 소개하고, 디자인 패턴에 대한 모델화를 통해 분석하는 방법을 알려 준다.

네번째, EDP를 통해 디자인 패턴을 리팩토링하고 코드에 적용하는 방법을 소개 한다.

다섯번째, EDP 카탈로그에서 EDP의 방법으로 예시, 개선점, 패턴간의 비교, 장단점, 소스 코드, 다이어그램들을 통해 디자인 패턴, 중간 합성 패턴, GoF 합성 패턴들을 소개한다.

일곱번째, EDP의 이론적 토대가 되는 Rho p-calculus를 소개와 함께 PIN + UML을 통해 소개된 디자인 패턴에 대한 공식을 소개한다.

사람의 지능은 10살 정도이면 완성이 된다고 한다. 그러나 나이를 먹어감에 따라 역량에 차이가 커져가는 것은 그 사람의 경험이 영향을 주는 것이라고 한다. 책을 읽는 것도 하나의 경험이다. 좋은 경험을 가질 수 있는 기회를 준 한빛미디어에 감사 드린다.

이 책을 코딩과 설계를 "더" 잘하고 싶은 모든 개발자들에게 권한다. 이미 다른 책을 통해 디자인 패턴 을 공부 하였더라도! 복습도 하며 새로운 관점을 가지게 된다.

Elemental Design Patterns 객체지향과 디자인 패턴의 연결 고리 - 제이슨 맥컴 스미스, 한빛 미디어


1) Elemental Design Patterns 이란?


자바/C/C++등 객체지향에 대한 근본적인 이해도가 있는 개발자를 위한 더 나은 생각 정리를 위한 새로운 정리 방법이라 정의 할 수 있다.

쉽게 설명하여 언어에 관한 메소드, 객체에 대하여 이해한 후 개발 목표로 하는 프로그램을 조금 더 쉽게 정의하는 설계도를 만들 수 있는

좋은 가이드를 제공한다. 본 책을 읽은 개발자는 자바 개발을 함에 더 간단한 코드나 함수를 사용 할 수 있진 않지만 생각 정리를 도표/설계화 하여

빠르게 정의 내릴 수 있다.


메소드,객체 등 프로그램의 기본 구조를 요소화 하여, 각 요소의 특징을 정의, 상관관계를 만드는 새로운 표기법을 제시한다.

위 책이 많이 어렵다 느껴진다면 한빛 미디어의 Head First Design Patterns를 읽길 권한다. 디자인 패턴은 분명 어느 정도 이상의 수준을 갖춘

개발자가 반드시 뛰어 넘어야 할 분야다. 잘 하는 개발자가 되기 위해서는 코드를 단순히 구현함에 그치는 것이 아니라

확장성과 수정가능성을 고려하여 개발을 진행해야 하기 때문이다. 분명 처음 디자인 패턴을 접하는 개발자는 헤드퍼스트를 먼저 접하길 권한다.

헤드퍼스트에는 예제, 그림등이 활용되어 빠른 기초 이해를 유도한다. 헤드퍼스트 이해가 완료되면 곧바로 위 책을 읽어도 좋다.



2) Elemental Design Patterns 는 무엇을 말하는가?


객체유사도와 메서드유사도의 정도를 기준으로 EDP를 2차원화하여 4종을 분류한다.

EDP의 4분류는 병합(Conglomeration) 되부름(Recursion) 위임(Delegation) 리디렉션(Redirection)이다. 언어를 공부하면서 들어본 분류도 있고

처음 듣는 분류도 있지만, 책을 읽으면 쉽게 이해가 될 정도로 당연한 내용이다. 그동안 공부했던 방법들을 어떻게 "명칭화"하는가의 차이일뿐

2차원으로 분류된 EDP를 다시 3차원화 하여 세부적으로 정의하는 것이 이 책의 기초이다.

얼마나 많은 내용을 분류화하여 "정의"했는가. 를 다룬 후, PIN 박스를 이용하여 UML로 작성하기에는 너무 복잡하고 다양한 내용을 간단하게

재정의 시킬 수 있다. 자세한 내용은 책을 읽어보면 큰 무리 없이 이해할 수 있지만, C와 자바를 넘나드는 설명에 한쪽으로만 언어를 이해한 개발자는

어려움을 겪을 수 도 있다. 오브젝트 C와 JAVA를 넘나들며 디자인 패턴을 설명하는 내용을 읽으면서, 자바의 장점과 C의 장점을 한번더 깨닫는 계기가 되었다.


3) Elemental Design Patterns의 결론?


언어를 완벽히 이해하지 못한 초보 개발자는, 책을 다시 보고 온 후 헤드퍼스트로 입문을 시작하자.

실력이 많이 향상된 개발자는 Elemental Design Patterns를 이해하고 한단계 더 레벨업 하자!

이도서는 디자인 패턴이란 단어앞에 Elemental 이란 단어가 붙어 있어서 디자인 패턴의 근본을 설명하고 그 원리를 좀더 논하는 책일 것이라 생각했다.

결론을 내리자면, 책 표지의 " 디자인 패턴은 기술인가, 과학인가?" 이 주제를 다루는 다루는 도서같다.
외국 번역서라는 특징과 외국인의 정서가 녹아있는 프로그래머가 아닌 사람한테는 어렵게 느껴지는 도서였다.
과연 프로그래머라도 이해가 용이할까 라는 생각이 들었다. 도리어 자연 과학서를 읽고있는 느낌....
패턴을 원소주기율표처럼 요소로 분해하고 조합하며, 디자인패턴 인스턴스 표현법, EDP 활용법을 논하고 있다.
즉, 신종 EDP를 소개하는 개론서이자 연구주제를 알려주는 책이기도 했다.
개인적으로는 내용이 어려웠다. 일단 해석서라는 특징으로 용어의 제목과 설명이 와닿지 않았다.

어디서 부터 어떻게 책의 느낌을 논할지는 모르겠지만, 책이 전달하고자 하는 내용을 정리하면,
- 모든 패턴이 원소 패턴으로 구성되어 있다고 한다. 예를 들어, "팩토리 메서드"패턴은 네 EDPS 로 분해 될 수있다."Create Object "를""Fulfill Method", "와""Fulfill Method", "Retrieve". 그리고 UML은 네 개의 하위 패턴과 큰 패턴의 시각화에 도움이 된다는 점이다.

- 다양한 방법으로 주어진 특정 패턴을 설명하고 있고, C, C++, Java, Objective-C 등의 다양한 언어로 패턴 구현법도 명시했다.
- 그리고 PIN을 통해 각 디자인 패턴을 더 간략히 표현할수 있다고 설명하고 있다.
- 디자인 패턴 (EDPS)은 객체 지향 프로그래밍의 기본 개념의 카탈로그로서, Create Object, Retrieve, nheritance, Abstract Interface, Redirection, Conglomeration, Recursion, Revert Method, Extend Method,Delegated Conglomeration, Redirected Recursion, Trusted Delegation, Trusted Redirection, Deputized Delegation, Deputized Redirection, Fulfill Method, Retrieve New, Retrieve Shared, Objectifier, Object Recursion 등을 설명한다. 각 카탈로그들을 PIN으로 표현하고, GOF 패턴에 매핑하여 설명하고 있다.

전문 지식이 없어서, 각각에 대한 설명을 쉽게 이해되지는 않았다.(해석서의 제한이기도 한것 같다.)
이도서를 연구서라고 느낀것은 EDP의 4개 요소(Conglomeration, Recursion, Delegation, Redirection)을 "객체유사도", "타입유사도", "메서도 유사도"의 3차원 공간에 다름과 유사함으로 구분하여 설명한것이 흥미로웠다.
책의 후반부에 GOF의 패턴들을 이 원리로서, PIN으로 표현하여 설명한 부분에서 이해가 조금씩 가기 시작했다.

전체적으로 해석판의 용어 정리와 디자인패턴 원리 설명이 전반부에 쉽게 풀어졌다며, 후반부에 좀더 재미있게 느껴졌을 것이고, 좀더 분석적인 리뷰를 적을수 있을것 같은데, 아쉬운 생각이 든다.
그리고 개인적으로 디자인패턴책을 다시 펴보게 되었다. 다음 개정판이 나오게 된다면, 다시한번 접해보고 싶은 생각도 든다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

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

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

닫기

리뷰쓰기

닫기
* 도서명 :
Elemental Design Patterns : 객체지향과 디자인 패턴의 연결 고리
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

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

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

오탈자 등록

닫기
* 도서명 :
Elemental Design Patterns : 객체지향과 디자인 패턴의 연결 고리
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
Elemental Design Patterns : 객체지향과 디자인 패턴의 연결 고리
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

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

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

닫기

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

자료실