Hands-On Design Patterns with C++: Solve common C++ problems with modern design patterns and build robust applications
<p><b>A comprehensive guide with extensive coverage on concepts such as OOP, functional programming, generic programming, and STL along with the latest features of C++</b></p> <h4>Key Features</h4> <ul><li>Delve into the core patterns and components of C++ in order to master application design </li> <li>Learn tricks, techniques, and best practices to solve common design and architectural challenges </li> <li>Understand the limitation imposed by C++ and how to solve them using design patterns </li> </ul> <h4>Book Description</h4> <p>C++ is a general-purpose programming language designed with the goals of efficiency, performance, and flexibility in mind. Design patterns are commonly accepted solutions to well-recognized design problems. In essence, they are a library of reusable components, only for software architecture, and not for a concrete implementation. </p> <p>The focus of this book is on the design patterns that naturally lend themselves to the needs of a C++ programmer, and on the patterns that uniquely benefit from the features of C++, in particular, the generic programming. Armed with the knowledge of these patterns, you will spend less time searching for a solution to a common problem and be familiar with the solutions developed from experience, as well as their advantages and drawbacks. The other use of design patterns is as a concise and an efficient way to communicate. A pattern is a familiar and instantly recognizable solution to specific problem; through its use, sometimes with a single line of code, we can convey a considerable amount of information. The code conveys: "This is the problem we are facing, these are additional considerations that are most important in our case; hence, the following well-known solution was chosen." </p> <p>By the end of this book, you will have gained a comprehensive understanding of design patterns to create robust, reusable, and maintainable code.</p> <h4>What you will learn</h4> <ul><li>Recognize the most common design patterns used in C++ </li> <li>Understand how to use C++ generic programming to solve common design problems </li> <li>Explore the most powerful C++ idioms, their strengths, and drawbacks </li> <li>Rediscover how to use popular C++ idioms with generic programming </li> <li>Understand the impact of design patterns on the program's performance </li> </ul> <h4>Who this book is for</h4> <p>This book is for experienced C++ developers and programmers who wish to learn about software design patterns and principles and apply them to create robust, reusable, and easily maintainable apps.</p><h4>Table of Contents</h4> <ol><li>An introduction to Inheritance and polymorphism</li> <li>Class and function templates</li> <li>Memory ownership </li> <li>Swap - from simple to subtle</li> <li>A Comprehensive Look at Resource Acquisition is Initialization (RAII)</li> <li>Type Erasure</li> <li>SFINAE and Overload Resolution Management</li> <li>The Curiously Recurring Template Pattern</li> <li>Named Arguments and Method Chaining</li> <li>Local Buffer Optimization</li> <li>Scopeguard </li> <li>Friend Factory</li> <li>Virtual Constructors and Factories</li> <li>The Template Method Pattern and the Non-Virtual Idiom</li> <li>Singleton: a Classic OOP Pattern</li> <li>Policy-based design</li> <li>Adaptors and Decorators</li> <li>Visitor and multiple dispatch</li></ol>