0%

Book Description

Apply modern C++17 to the implementations of classic design patterns. As well as covering traditional design patterns, this book fleshes out new patterns and approaches that will be useful to C++ developers. The author presents concepts as a fun investigation of how problems can be solved in different ways, along the way using varying degrees of technical sophistication and explaining different sorts of trade-offs.

Design Patterns in Modern C++ also provides a technology demo for modern C++, showcasing how some of its latest features (e.g., coroutines) make difficult problems a lot easier to solve. The examples in this book are all suitable for putting into production, with only a few simplifications made in order to aid readability.

What You Will Learn
  • Apply design patterns to modern C++ programming
  • Use creational patterns of builder, factories, prototype and singleton
  • Implement structural patterns such as adapter, bridge, decorator, facade and more
  • Work with the behavioral patterns such as chain of responsibility, command, iterator, mediator and more
  • Apply functional design patterns such as Monad and more

Who This Book Is For

Those with at least some prior programming experience, especially in C++.

Table of Contents

  1. Cover
  2. Frontmatter
  3. 1. Introduction
  4. 1. Creational Patterns
    1. Part Frontmatter
    2. 2. Builder
    3. 3. Factories
    4. 4. Prototype
    5. 5. Singleton
  5. 2. Structural Patterns
    1. Part Frontmatter
    2. 6. Adapter
    3. 7. Bridge
    4. 8. Composite
    5. 9. Decorator
    6. 10. Façade
    7. 11. Flyweight
    8. 12. Proxy
  6. 3. Behavioral Patterns
    1. Part Frontmatter
    2. 13. Chain of Responsibility
    3. 14. Command
    4. 15. Interpreter
    5. 16. Iterator
    6. 17. Mediator
    7. 18. Memento
    8. 19. Null Object
    9. 20. Observer
    10. 21. State
    11. 22. Strategy
    12. 23. Template Method
    13. 24. Visitor
  7. 4. Appendix A: Functional Design Patterns
    1. Part Frontmatter
    2. 25. Maybe Monad
  8. Backmatter
18.119.117.207