Practical Design Patterns in C++
"I
would definitely recommend to any recent
college
graduate (like myself) to take it. Most of the topics are not
taught
at school."
- New Hire
Description
This course provides a
strong introduction to the concept and use of
design
patterns in the C++ context. While we do introduce the student to
the concepts and theory that underlie design patterns, most of the
course
is spent in a highly practical examination of specific design patterns
as implemented in the C++ language.
Unique to the course are
sections that show how to employ patterns
in
combination to solve sophisticated design problems, and advice as to
how
to select among available patterns in a specific context. The
course
also covers many of the lesser known features of the C++ language and
C++
programming techniques and idioms that are of practical importance when
applying the patterns.
The course also covers
related issues of class, hierarchy, and
framework
design in the context of patterns that motivate the issues.
The course includes design
labs and optional programming exercises
and
solutions.
A portion of the course's
material has been given as a one-day
tutorial
at Software Development. Here's a press
release-like description.
Audience
This course is designed
to serve the needs of professional software
engineers
with C++ background equivalent to Introduction
to Object Oriented Programming in C++ and several months of
production
C++ experience.
Format
3 or 4 days,
lecture/design labs, optional programming labs
This course may be
customized to the individual client's application
domain, project, staff experience level, and scheduling requirements.
Texts
Recommended text:
Gamma, et al., Design
Patterns, Addison
Wesley, 1995.
Course notes.
Outline
- Part 1: Pattern Concepts
- Part 2: Design Patterns in C++
- Iterator
- Factory Method
- Singleton
- Monostate
- Expanding Monostate
- Abstract Factory
- Composite
- Command
- Null Object
- Prototype
- Active Object
- Template Method
- Abstract Server
- State
- Strategy
- Dynamic Inheritance
- Decorator
- Proxy
- Facade
- Bridge
- Adapter
- External Polymorphism
- Observer
- Part 3: Advice and Reflection
- Pattern Differences
- Structure vs. Intent Confusion
- Indication for Specific Patterns
- Compound Patterns
- Part 4: Some Advanced Patterns
- Visitor
- Acyclic Visitor
- Interpreter
- Part 5: C++ Templates and Design Patterns
- Augmenting Pattern Application with Templates
- Policy-Based Design
- Part 6: Design Labs