이미 소장하고 있다면 판매해 보세요.
1장 개요
__1.1 사전 지식 __1.2 중요한 개념 __1.3 SOLID 디자인 원칙 제 I 부 생성 패턴 I.1 함수에서의 객체 리턴 2장 빌더 __2.1 시나리오 __2.2 단순한 빌더 __2.3 흐름식 빌더 __2.4 의도 알려주기 __2.5 그루비-스타일 빌더 __2.6 컴포지트 빌더 __2.7 요약 3장 팩터리 __3.1 시나리오 __3.2 팩터리 메서드 __3.3 팩터리 __3.4 내부 팩터리 __3.5 추상 팩터리 __3.6 함수형 팩터리 __3.7 요약 4장 프로토타입 __4.1 객체 생성 __4.2 평범한 중복 처리 __4.3 복제 생성자를 통한 중복 처리 __4.4 직렬화(Serialization) __4.5 프로토타입 팩터리 __4.6 요약 5장 싱글턴(Singleton) __5.1 전역 객체로서의 싱글턴 __5.2 전통적인 구현 __5.2.1 멀티스레드 안정성 __5.3 싱글턴의 문제 __5.4 싱글턴과 제어 역전(Inversion of Control) __5.5 모노스테이트(Monostate) __5.6 요약 제 II 부 구조 패턴 6장 어댑터 __6.1 시나리오 __6.2 어댑터 __6.3 일시적 어댑터 __6.4 요약 7장 브릿지 __7.1 Pimpl 관례 __7.2 브릿지 __7.3 요약 8장 컴포지트 __8.1 배열에 기반한 속성 __8.2 그래픽 객체의 그루핑 __8.3 뉴럴 네트워크 __8.4 요약 9장 데커레이터 __9.1 시나리오 __9.2 동적 데커레이터 __9.3 정적 데커레이터 __9.4 함수형 데커레이터 __9.5 요약 10장 퍼사드( ) __10.1 터미널은 어떻게 동작할까? __10.2 고급 터미널 __10.3 퍼사드는 어디에 있는가? __10.4 요약 11장 플라이웨이트(Flyweight) __11.1 사용자 이름 __11.2 Boost.Flyweight __11.3 문자열 범위 __11.4 섣부른 접근 방법 __11.5 플라이웨이트의 구현 __11.6 요약 12장 프록시(Proxy) __12.1 스마트 포인터 __12.2 속성 프록시 __12.3 가상 프록시 __12.4 커뮤니케이션 프록시 __12.5 요약 제 III 부 행태 패턴 13장 책임 사슬(Chain of Responsibility) __13.1 시나리오 __13.2 포인터 사슬 __13.3 브로커 사슬 __13.4 요약 14장 커맨드 __14.1 시나리오 __14.2 커맨드 패턴의 구현 __14.3 되돌리기(Undo) 작업 __14.4 컴포지트 커맨드 __14.5 명령과 조회의 분리 __14.6 요약 15장 인터프리터 __15.1 산술 표현식의 계산 __15.2 Boost.Spirit을 이용한 파싱 __15.3 요약 16장 반복자(Iterator) __16.1 표준 라이브러리의 반복자 __16.2 이진 트리의 탐색 __16.3 코루틴(Coroutine)을 이용한 순회 __16.4 요약 17장 매개자(Mediator) __17.1 채팅 룸 __17.2 매개자와 이벤트 __17.3 요약 18장 메멘토(Memento) __18.1 은행 계좌 __18.2 Undo와 Redo __18.3 요약 19장 Null 객체 __19.1 시나리오 __19.2 Null 객체 __19.3 shared_ptr는 Null 객체가 아니다 __19.4 개선된 디자인 __19.5 묵시적인 Null 객체 __19.6 요약 20장 관찰자(Observer) __20.1 속성 관찰자 __20.2 Observer __20.3 Observable __20.4 관찰자(Observer)와 관찰 대상(Observable)의 연결 __20.5 종속성 문제 __20.6 수신 해제와 스레드 안정성 __20.7 재진입성(Reentrancy) __20.8 Boost.Signals2를 이용한 관찰자 __20.9 요약 21장 상태(State) __21.1 상태 기반 상태 전이 __21.2 수작업으로 만드는 상태 머신 __21.3 Boost.MSM을 이용한 상태 머신 __21.4 요약 22장 전략 __22.1 동적 전략 __22.2 정적 전략 __22.3 요약 23장 템플릿 메서드 __23.1 게임 시뮬레이션 __23.2 요약 24장 방문자(Visitor) __24.1 침습적 방문자 __24.2 반추적(reflective) 출력 __24.3 디스패치(Dispatch)? __24.4 전통적인 방문자 __24.5 비순환 방문자 __24.6 std::variant와 std::visit __24.7 요약 제 IV 부 부록: 함수형 디자인 패턴 25장 ~라면 모나드(Maybe Monad) |
Dmitri Nesteruk
권오인의 다른 상품
[CONTENTS]
SOLID 디자인 원칙 생성 패턴 구조 패턴 행태 패턴 함수형 디자인 패턴 [예제 코드] · 길벗 깃허브 저장소: https://github.com/gilbutITbook/007028 · 원서 소스 코드: https://github.com/Apress/design-patterns-in-modern-cpp [베타테스터 실습 후기] 읽는 동안 C++ 코드와 본문을 자주 넘나들며 읽었습니다. 패턴이 가져오는 코드의 만듦새를 강조하기보다 코드의 의미를 풀어쓰면서 C++ 언어로의 진입장벽을 낮추고자 했던 것 같습니다. 분량이나 다루어야 하는 범위로 인해 문턱을 없애지는 못했지만, C++ 입문 서적 한 권을 떼었다면 본문의 설명만으로 충분할 것이라 생각합니다. 디자인 패턴을 처음 공부하신다면 수라의 길이 될지도 모릅니다만, 이 책을 두고두고 보시게 될 겁니다 :) 저 개인적으로는 1, 3, 2장 순서로 보기를 권합니다. 독자분들께서 (체감상) 불편한 코딩 환경을 가지고 계시다면, 혹은 프로젝트를 만들고 소스 코드를 관리하는 방법에 대한 조언을 구하기 어렵다면 책의 예제들을 https://wandbox.org에서 실행해보는 것도 권해드리고 싶습니다. Wandbox에서는 Boost를 지원하니 일부 예제를 제외하면 큰 문제없이 코딩 연습을 병행할 수 있을 것입니다. 실습 환경 · H/W: Dell XPS 15 9560 · O/S: Windows 10 1809 Pro x64 · Tool: Visual Studio 2017 Professional, NuGet 패키지 매니저 · SDK: Windows SDK 10.0.14393.0 _ 박동하 / ㈜알체라 전문연구원 [옮긴이의 말] 디자인 패턴은 일상적인 코딩 문제들의 해법을 일반화한 코딩 노하우의 모음입니다. 프로그래머라면 절대 놓쳐서는 안될 지식입니다. 프로그래머로서 역량을 키우는데 디자인 패턴만큼 배우기 쉬우면서도 효과가 큰 지식은 대단히 드뭅니다. 당연하게도 코딩 문제의 해법은 사용하는 프로그래밍 언어의 특성에 큰 영향을 받습니다. C++는 난해하기로 악명이 높고 오랜 기간 정체되어 있었습니다. 하지만 C++11 표준을 시작으로 “모던 C++”라는 애칭을 부여받으며 잠에서 깨어나고 있습니다. 모던 C++는 C++만이 제공하는 끝판왕급 최적화 기능과 하드웨어 제어 자유도를 고스란히 간직하고 있습니다. 여기에 부러워하며 쳐다보기만 했던 신생 언어들의 멋진 기능들을 품으며 새롭게 태어났습니다. 디자인 패턴을 모던 C++ 버전으로 누가 좀 정리해줬으면 좋겠다는 생각을 하던 차에 이 책을 만났습니다. 딱 생각하던 바로 그 책이었습니다. 이 책은 최신 C++ 표준은 물론 아직 표준화가 진행 중인 따끈따끈한 기능까지 활용하고 있습니다. 모던 C++의 새로운 기능들로 인해 코드가 얼마나 간결하고 아름다워질 수 있는지 보여줍니다. 뿐만 아니라 전통적인 디자인 패턴에 대한 비판과 대안도 제시하고 있으며 함수형 언어에서 활용되는 모나드 개념까지 소개하고 있습니다. 모니터 바로 옆에 두고 애용될 책이라 믿어 의심치 않습니다. _권오인 |