Course Overview

This class will introduce students to a few of the most common Object-Oriented Design Patterns and Idioms used in C++. You will learn how to leverage proven solutions to common re-occurring problems and a common vocabulary to describe a software system. As part of this process, students will obtain key insights in how to design object-oriented systems.

Key Learning Areas

  • Why use Design Patterns
  • Utilize design patterns to build loosely coupled systems
  • Simplify code using design patterns
  • Learn a common vocabulary to communicate complex ideas quickly and efficiently
  • Learn implementations of the Gang of Four Design patterns
  • See the power of combining many patterns to produce an elegant solution

Course Outline

  • Why Design Patterns
  • Singleton Pattern
  • RAII (Resource Acquisition Is Initialization)
  • Copy-and-swap
  • Strategy and Template Patterns
  • Observer Pattern
  • Decorator Pattern
  • Factory Pattern (Virtual Constructor)
  • CRTP (Curiously Recurring Template Pattern)
  • PImpl (Pointer to Implementation)

Who Benefits

Developer's wishing to develop their Object Orientated skills. After attending this course developers will be able to code smarter and building simpler solutions. This course is essential for all developers wishing to ensure they are using best practice when it comes to designing and building an object orientated system with C++.


The expected audience for this course is C++ developers with at least 6 months experience.