Design patterns have proven to be useful over several decades and knowledge about them is still very useful to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, think about design and implement solutions. This 3-day training explores modern C++ design and the modern forms of the classic design patterns. It gives an overview of design patterns, how to use them productively and how to combine them to achieve better results. Additionally, it provides guidelines, idioms and best practices for sustainable and maintainable design, which enable programmers to create professional, high-quality code.
There is no requirement on the operating system. The programming exercises work on Windows, Linux or MacOS. For the programming exercises, participants must be provided with a C++11/14/17 compiler. It is recommended to at least provide Microsoft Visual Studio 2015, GNU 4.8, Clang 3.6, or Intel 15.0. Additionally, for Windows with Visual Studio CMake is required to generate the according VS solutions.
Participants are either required to bring their own laptops or the training room must be equipped with appropriate desktop machines. In the optimal case each participant has his own machine and can solve the programming exercises individually, but pairs of two are also possible.
Participants are required to have at least two to three years of C++ experience. The course expects that all participants are familiar with the syntax of the language and have used inheritance and templates before.
- Basic Design Principles (SOLID)
- The Single Responsibility Principle
- The Open-Closed Principle
- The Liskov Substitution Principle
- The Interface Segregation Principle
- The Dependency Inversion Principle
- Classic Design Patterns Revisited
- Template Method
- Factory Method
- Modern C++ Design Patterns
- Type Erasure
- Curiously Recurring Template Pattern
- Expression Templates
- Policy Based Design