디자인 패턴 학습에 관심이 있으며이 주제를 학습 할 때 최상위 계층 책으로 간주되는 내용을 알고 싶습니다.
모범 사례, 디자인 방법론 및 기타 디자인 패턴에 대한 유용한 정보를 설명하기위한 사실상의 표준이있는 책이 있습니까? 그 책은 어떻습니까?
디자인 패턴 학습에 관심이 있으며이 주제를 학습 할 때 최상위 계층 책으로 간주되는 내용을 알고 싶습니다.
모범 사례, 디자인 방법론 및 기타 디자인 패턴에 대한 유용한 정보를 설명하기위한 사실상의 표준이있는 책이 있습니까? 그 책은 어떻습니까?
답변:
디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소는 디자인 패턴 에 대한 표준 책의 정의와 매우 유사합니다. Wikipedia 기사 (강조 광산) 에 따르면 :
이 책의 최초 발행일은 1994 년 10 월 21 일이며 1995 년 저작권이 있으며 2010 년 7 월 기준 으로이 책은 38 번째로 인쇄되었습니다 . 이 책은 1994 년 10 월 오레곤 주 포틀랜드에서 열린 OOPSLA 회의에서 대중에게 처음으로 제공되었습니다.이 책은 소프트웨어 공학 분야에 큰 영향을 미쳤으며 객체 지향 설계 이론 및 실습의 중요한 소스로 간주됩니다. 이상 50 만 카피가 판매 된 영어 및 13 개 다른 언어 .
디자인 패턴의 개척자 인 Ward Cunningham 은 WikiWikiWeb 에서 책 패턴의 온라인 카탈로그를 유지 관리합니다 . 그리고 디자인 패턴 에 대한 Wikipedia 기사에 따르면 (다시 강조).
Design Patterns : Elements of Reusable Object-Oriented Software 책 이 소위 "Gang of Four"(Gamma et al.)에 의해 1994 년 에 출판 된 후 컴퓨터 과학에서 디자인 패턴 이 인기를 얻었습니다 .
같은 기사 에서 장르에서 주목할만한 다른 책이 많이 있습니다 .
- 패턴 지향 소프트웨어 아키텍처 1 권 : Douglas Schmidt, Michael Stal, Hans Rohnert 및 Frank Buschmann 의 패턴 시스템 ,
- Martin Fowler 의 엔터프라이즈 애플리케이션 아키텍처 패턴 ,
- 엔터프라이즈 통합 패턴 : Hohpe, Gregor 및 Bobby Woolf의 메시징 솔루션 설계, 구축 및 배포
- Eric T. Freeman, Elisabeth Robson, Bert Bates 및 Kathy Sierra가 디자인 한 Head First Design Patterns
내가 파울러의 책을 읽은 사람들 중, 그것은 매우 영향력 있고 잘 읽었습니다. 특정 시점에서 그것은 내 취향에 대해 약간 모호하지만 전반적으로 즐거운 책입니다. 책에 포함 된 패턴 의 온라인 카탈로그 가 있으며 최소한의 설명 만 있습니다.
나는 또한 헤드 퍼스트 디자인 패턴을 훑어 보았고 헤드 퍼스트 시리즈의 다른 책을 읽은 경우 시리즈의 대부분의 책 과 동일한 품질과 즐거움을 얻습니다 .
Head First는 O'Reilly Media가 출판 한 여러 주제에 대한 일련의 입문 교육 서적입니다. 그것은 정통적이고 시각적으로 집중적 인 독자 중심 퍼즐, 농담, 비표준 디자인 및 레이아웃, 독자를 주어진 주제에 몰입시키는 매력적인 대화 스타일을 강조합니다.
모든 일반적인 재사용 솔루션이 디자인 패턴으로 간주 될 수 있기 때문에 "디자인 패턴"이라는 용어는 다소 모호합니다. 필자는 위에서 언급 한 주목할만한 책 중 하나, 특히 Gang of Four and Fowler 책에 설명 된 솔루션에 레이블을 적용하는 경향이 항상 나타났습니다. 디자인 패턴은 고유 한 개발 프로세스를 따르지 않으며, 막대한 재사용이 가능하고 식별하기 매우 어려운 일반적인 소프트웨어 솔루션입니다 .
그러나 두 책의 온라인 카탈로그를 특정 언어 책의 내용과 비교하면 해당 책이 종종 템플릿으로 사용되는 것을 알 수 있습니다. 따라서 두 책 모두 객체 지향 프로그래밍으로 제한되어 있지만 두 책 모두 표준 참조에 매우 가깝고 역사적 관점에서 GoF 책이 더 중요 합니다 .
The Gang of Four book- 디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소 는 아마도 디자인 패턴에 대한 업계 표준과 가장 가까운 것입니다.
보다 접근하기 쉬운 소개를 위해 Head First : Design Patterns 도 좋습니다. '유행'표지를 잘 읽지 마십시오. 글을 잘 읽고 GoF 책의 개념을 먼저 읽으면 훨씬 쉽게 이해하는 데 도움이 될 것입니다.
어느 시점에서든 누군가가 당신과 같은 소프트웨어 디자인 문제로 어려움을 겪고 있습니다. 휠 (또는 더 나쁜 타이어 타이어)을 재발 명하고 싶지 않다는 것을 알고 있으므로 동일한 문제에 직면 한 사람들이 습득 한 교훈 인 디자인 패턴을 봅니다. 디자인 패턴을 사용하면 다른 사람의 모범 사례와 경험을 활용하여 다른 것에 시간을 할애 할 수 있습니다. 더 어려운 것. 더 복잡한 것. 더 재미있는 것.
중요한 패턴, 사용 이유, 사용시기, 사용 방법 (사용하지 않을 때)에 대해 배우려고합니다. 그러나 당신은 책에서 패턴이 어떻게 보이는지보고자하는 것이 아니라, "야생적으로"어떻게 보이는지 알고 싶을 것입니다. 그들의 본래 환경에서. 즉, 실제 응용 프로그램에서. 또한 Java API에서 패턴이 사용되는 방식과 사용자 고유 코드에서 Java의 내장 패턴 지원을 활용하는 방법을 배우고 싶습니다.
실제 OO 디자인 원칙과 상사가 상속에 대해 말한 모든 것이 잘못되었을 수있는 이유와 그 대신해야 할 일을 배우고 싶습니다. 다음에 디자인 패턴이없는 개울을 만들 때 이러한 원칙이 어떻게 도움이되는지 알고 싶습니다.
가장 중요한 것은 디자인 패턴의 "비밀 한 언어"를 배우고 싶어서 동료 (및 칵테일 파티 손님)가 자신의 명령, 외관, 대리 및 마티니 한 모금 사이에 공장. Singleton이 왜 그렇게 단순하지 않은지, 팩토리가 자주 오해되는 방식, Decorator, Facade 및 Adapter의 실제 관계에 대한 심층적 인 이해를 쉽게 이해할 수 있습니다.
로 헤드 퍼스트 디자인 패턴 , 당신은 실내 장식을 생각하면 "거래 공간"공연에서 뭔가의를 피하고 있습니다 ...
그렇습니다. 디자인 패턴 에 대한 잘 알려진 책이 있습니다 : 디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소들 그리고 저자들은 종종 "The Gang of Four"(GoF)라고 불리며 디자인 패턴에 관한 거의 모든 텍스트에서 참조됩니다.
에서 위키 피 디아 :
디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소는 소프트웨어 디자인의 일반적인 문제에 대한 반복적 인 솔루션을 설명하는 소프트웨어 엔지니어링 책입니다. 이 책의 저자는 Grady Booch의 머리말과 함께 Erich Gamma, Richard Helm, Ralph Johnson 및 John Vlissides입니다. 저자는 종종 Gang of Four, GoF 또는 Go4라고합니다. 이 책은 두 부분으로 나누어 져 있으며, 처음 두 장은 객체 지향 프로그래밍의 기능과 함정을 탐구하고 나머지 장은 23 개의 고전적인 소프트웨어 디자인 패턴을 설명합니다. 이 책에는 C ++ 및 Smalltalk의 예제가 포함되어 있습니다.
최고의 디자인 패턴 웹 사이트 중 하나는 최초의 위키 인 Ward 's Wiki입니다. 좋은 시작 페이지는 http://c2.com/cgi/wiki?HistoryOfPatterns 를 참조 하십시오 .
1987 년 Ward와 Kent는 텍트로닉스의 반도체 테스트 시스템 그룹과 협의하여 설계 마무리에 어려움을 겪고있었습니다. 그들은 연구하고 있던 패턴을 시험해보기로 결정했습니다. 건물의 점유자가 건물을 설계해야한다고 알렉산더가 말했듯이, Ward와 Kent는 사용자 (트레이너와 현장 엔지니어)의 대표자들이 설계를 완료하도록했습니다.
Ward는 초보 디자이너가 Smalltalk의 강점을 활용하고 약점을 피하는 데 도움이되는 5 가지 패턴의 "언어"를 제시했습니다.
Ward와 Kent는 사용자가 디자인 한 인터페이스의 우아함에 놀랐습니다. 그들은 올랜도의 OOPSLA 87에서이 실험의 결과를보고했다. 그들은 패널 위치를 썼고 Norm Kerth의 워크샵에서 물건은 어디에서 왔습니까? 그들은 얼굴이 파랗게 될 때까지 패턴을 이야기하고 많은 동의를 얻었지만 더 구체적인 패턴이 없으면 아무도 서명하지 않았습니다.
한편 에리히 감마 (Erich Gamma)는 박사 학위 논문의 일부로 ET ++의 객체 지향 디자인에 대해 글을 쓰고 반성했습니다. Erich는 반복적 인 디자인 구조 나 패턴이 중요하다는 것을 깨달았습니다. 문제는 실제로 어떻게 캡처하고 의사 소통 하는가였습니다.
Bruce Anderson은 ErichGamma가 있었던 TOOLS 90에서 연설을했습니다. Erich는 연설을 좋아했습니다. Bruce는 EcoopOopsla90 (오타와)에서 논문을 주었고 Erich Gamma, Richard Helm 등이 건축 핸드북으로 Toof라는 BOF를 운영하여 다른 사람들이 패턴에 대해 토론했습니다. 리차드와 에리히가 처음 만났을 때, 재사용 가능한 OO 소프트웨어 작성의 핵심 아이디어에 대한 공통된 아이디어를 공유한다는 것을 깨달았습니다.
ECOOP'91 직전에 무더운 여름날 취리히의 옥상에 앉아 Erich Gamma와 Richard Helm은 결국 DesignPatterns가 될 패턴 카탈로그의 매우 겸손한 시작을 모았습니다.
우연히, Erich Gamma, Richard Helm, Ralph Johnson 및 John Vlissides가 모두 있었다. 그들은 나중에 Design Patterns 책 을 저술 한 Gang of Four 가되었습니다 ...
이 튜토리얼 사이트에는 다음과 같은 하위 섹션이 포함되어 있습니다
이 사이트에는 안티 패턴, UML 및 리팩토링에 대한 가이드도 포함되어 있습니다.
"디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소"라는 원본 책은 객체 지향 디자인 패턴을위한 훌륭한 자료입니다.
거기에는 다른 많은 책들이 있습니다. 빠른 참조가 필요하고 GoF 책에 접근 할 수없는 경우, Wikipedia는 일반적으로 그와 다른 디자인 패턴에 대한 충분한 정보를 가지고 있습니다.
그것들은 내가 사용하는 주요 것들입니다. 또한 사람들은 프로젝트 관리와 같은 다른 것들에 패턴 형식을 적용하기 시작했습니다.
반 패턴에 대해 알고 싶다면 "반 패턴 : 위기에 처한 소프트웨어, 아키텍처 및 프로젝트 리팩토링"과 "리팩토링 : 기존 코드의 디자인 개선"이라는 두 권의 책이 있습니다. 코드 냄새, 반 패턴의 또 다른 이름.
Robert C. Martin의 "C #에서의 민첩한 원칙, 패턴 및 사례" Java 버전의 책이 있다고 생각합니다.
또한 패턴 자체는 아니지만 Domain Driven Design에는 전체 DDD 방식을 사용하지 않더라도 훌륭한 개념이 있습니다.
* Ubiquitous Language
* Code first approach (vs. DB first)
* etc.
C ++의 디자인 패턴에 특히 관심이 있다면 Andrei Alexandrescu의 Modern C ++ Design 을 사용해보십시오 .
이 책은 C ++에서 Factory, Singleton 및 Visitor와 같이 일반적으로 사용되는 패턴을 구현하는 방법에 대해 설명합니다. 또한 스마트 포인터, 템플릿 메타 프로그래밍 및 정책 기반 클래스 디자인과 같은 매우 C ++ 관련 주제에 대해서도 설명합니다.
책 저자는 그의 권위있는 전문가 이며
템플릿 메타 프로그래밍을 통해 구현 된 정책 기반 디자인에 대한 선구적인 작업. 이러한 아이디어는 그의 책 Modern C ++ Design에 설명되어 있으며 프로그래밍 라이브러리 Loki에서 처음 구현되었습니다. 또한 MOJO 라이브러리에서 "생성자 이동"개념을 구현했습니다. 그는 "Generic <Programming>"이라는 제목으로 C / C ++ Users Journal에 공헌했습니다 .