Practical Design Patterns in C++
Effective, Real-World Use of Design
Patterns for Design, Coding, and Documentation
Description
This course provides a
strong introduction to the use of
design
patterns in the C++ context. While we do discuss
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 the Software Development conference. Here's a press
release-like description.
Audience
This course is designed
to serve the needs of professional software
engineers
with at least
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.
Copies of the course
materials, with extensive explanatory notes.
Outline
- Part 1: Pattern Concepts
- Part 2: Creational Patterns
- Factory Method
- Prototype
- Singleton
- Destroyers
- Schwarz Counters
- Double Checked Locking
- Part 3: Callbacks and Commands
- Composite
- Commands and Callbacks
- Traditional Callbacks
- Function Objects
- Compound Commands
- Command and Composite
- Command and Prototype
- Command and Null Object
- Active Object
- Part 4: Introducing Indirection
- State
- Strategy
- Decorator
- Proxy
- Facade
- Bridge
- Part 5: Additional Patterns
- Template Method
- Abstract Server
- Adapter
- Observer
- Part 6: Advice and Reflection
- Pattern Differences
- Structure vs. Intent Confusion
- Indications for Specific Patterns
- Compound Design Patterns
- Code Smells and Refactoring Into Patterns
- Part 7: Visitors
- Visitor
- Acyclic Visitor
- Interpreter
- Part 8: Policy-Based Design
- Policies
- A Policy-Based Factory
- Templatized Acyclic Visitor
- Typelists and Ad-Hoc Visitor
- Part 9: Design Labs
- Part 10: Programming Labs [optional]