Skip to content







Use coupon code LEARN21 at checkout for 21% off any course. Valid through 9/30/21.
*Offer excludes Scaled Agile (SAFe®) courses, CSP-SM and private team training.

Object Oriented Design Patterns and Best Practices in C++

Explore the most common object-oriented design patterns (Gang of Four) and how to use these patterns to develop solid, robust and reusable software development applications.

Geared for experienced C++ developers, Object-Oriented Design Patterns and Best Practices in C++ is lab-intensive hands-on design patterns training course.

Working in a hands-on environment, developers will explore key Creational, Structural and Behavior Design patterns and how they used most effectively in building robust, reusable applications. This course combines the use of hands-on coding labs with several “mini-projects” to be completed throughout the training to get the students using and reviewing the Patterns in a practical manner.  All lab coding work and examples can be performed working in a C++ development environment.  The course also contains several “thinking and drawing” lab exercises as a component of the object-oriented overview portion of the training course.

Skills-Focused, Hands- on Learning:  This course consists of approximately 50% hands-on lab work (Patterns).  Throughout the course students will be led through a series of progressively advanced topics, where each topic consists of lecture and group discussion.  This class is “technology-centric”, designed to train attendees in the most current, effective techniques with the most effective practices.

Available formats for this course
Live Online
Private Team Training
5 days/40 hours of instruction
Public Classroom Pricing

Starting at: $2495(USD)


GSA Price: $1870

Group Rate: $2395

Part 1: Design Principles

1. Design Goals

  • Rotting Design
  • Design Goals
  • Making it Happen
  • Rotting Design
  • Design Goals
  • Making it Happen

  • 2. SmellsRigidity
  • Fragility
  • Immobility
  • Viscosity
  • Needless Complexity
  • Needless Repetition
  • Opacity

  • 3. SOLID DesignSingle Responsibility
  • Open/Close
  • Liskov Substitution Principle
  • Interface Separation Principle
  • Dependency Inversion Principle

Part 2: Introduction to Design Patterns

  • 1. Introduction to Design PatternsWhy We Use Patterns
  • A Crisp Understanding of Patterns
  • Design Patterns in Particular
  • Sound Design Principles Implemented by Patterns

  • 2. Patterns and PrinciplesDifferences Between Principles and Patterns
  • Overview of “Gang of Four” Patterns

Part 3: “Gang of Four” Design Patterns

  • 1. Each Pattern below will include:Context; Problem; Solution
  • Components; Implementation
  • Code Examples; Consequences
  • Review and Summary
  • Supplemental Information
  • 2. Creational PatternsFactory Method
  • AbstractFactory
  • Singleton
  • Exercise: Factory Method Pattern – Connection
  • Exercise: AbstractFactory Pattern – Vehicle Assembly
  • Exercise: Singleton Pattern – Instance Counting
  • Exercise: Singleton Pattern – Permanent Instance

  • 3. Structural PatternsFaçade
  • Composite
  • Adapter
  • Proxy
  • Exercise: Façade Pattern – Scanning and Parsing
  • Exercise: Composite Pattern – Display Arithmetic
  • Exercise: Composite Pattern – Write Orders
  • Exercise: Adaptor Pattern – Legacy Connections
  • Exercise: Proxy Pattern – Build a Calculator

  • 4. Behavioral PatternsIterator
  • Template Method
  • Observer
  • Command
  • State
  • Strategy
  • Exercise: Iterator Pattern – Media Collection
  • Exercise: Template Method (Optional)
  • Exercise: Observer Pattern – Classroom
  • Exercise: Command Pattern – Change of Contact
  • Exercise: State Pattern
  • Exercise: Strategy Pattern

Part 4: Working with Patterns

  • 1. Applying PatternsUsefulness of Patterns
  • Selecting the Right Pattern
  • Adapting an Existing Pattern
  • Creating a New Pattern
  • Language Considerations

**Topics, agenda and labs are subject to change, and may adjust during live delivery based on audience needs and skill-level.


This an introductory-level programming course, designed for:

  • Experienced C++ developers who need to identify, design, and lead the implementation of OO projects.
  • Attendees should be familiar with UML and have basic programming experience in C++. 
  • This course is not recommended for developers new to C++ programming.

  • Effectively assign responsibilities using the patterns and principles of SOLID. 
  • Explore a wide variety of design patterns, targeting levels of coverage to focus on the most commonly used patterns, and to simply survey others. 
  • Compare and contrast patterns and explore the advantages and disadvantages of using certain patterns for explicit development functions in the C++ environment. 

Object Oriented Design Patterns and Best Practices in C++ Schedule

There are currently no scheduled classes for this course. Please contact us if you would like more information or to schedule this course for you or your company.

Request Private Team Training