Preface
From Object Orientation to Patterns
to True Object Orientation
From Artificial Intelligence to Patterns
to True Object Orientation
A Note About Conventions Used in This Book
Feedback
Acknowledgments
PART 1
An Introduction to Object-Oriented
Ware Development
Chaptor,
The Object-Oriented Paradigm
Overview
Before The Object-Oriented Paradigm:
Functional Decomposition
The Problem of Requirements
Dealing with Changes: Using Functional Decomposition
Dealing with Changing Requirements
The Object-Oriented Paradigm
Object-Oriented Programming in Action
Special Object Methods
Summary
Chapter 2
The UML-The Unfifed Modeling Language
Overview
What Is the UML?
Why Use the UML?
The Class Diagram
Interaction Diagrams
Summary
PART ll
The Limitations of Traditional
Object-Oriented Design
Chapter 3
A ProbIem That Cries Out for FIexible Code
Overview
Extracting Information from a CAD/CAM System
Understand the Vocabulary
Describe the Problem
The Essential Challenges and Approaches
Summary
Chapter 4
A Standard Object-Oriented SoIution
Overview
Solving with Special Cases
Summary
Supplement: C++ Code Examples
PART Ill
Design Patterns
Chapter 5
An lntroduction to Design Patterns
Overview
Design Patterns Arose from Architecture and Anthropology
Moving from Architectural to Software Design Patterns.
Why Study Design Patterns?
Other Advantages to Studying Design Patterns
Summary
Chapter 6
The Facade Pattern
Overview
Introducing the Facade Pattern
Learning the Facade Pattern
Field Notes: The Facade Pattern
Relating the Facade Pattern to the CAD/CAM Problem
Summary
Chapter 7
The Adapter Pattern
Overview
Introducing the Adapter Pattern
Learning the Adapter Pattern
Field Notes: The Adapter Pattern
Relating the Adapter Pattern to the CAD/CAM Problem
Summary
Supplement: C++ Code Example
Chapter 8
Expanding Our Horizons
Overview
Objects: the Traditional View and the New View
Encapsulation: the Traditional View and the New View
Find What Is Varying and Encapsulate It
Commonality/Variability and Abstract Classes
Summary
Chapter 9
The Brldge Pattern
Overview
Introducing the Bridge Pattern
Learning the Bridge Pattern: An Example
An Observation About Using Design Patterns
Learning the Bridge Pattern: Deriving It
The Bridge Pattern in Retrospect
Field Notes: Using the Bridge Pattern
Summary
Supplement: C++ Code Examples
Chaptor 1O
The Abstract Factory Pattern
Overview
Introducing the Abstract Factory Pattern
Learning the Abstract Factory Pattern: An Example
Learning the Abstract Factory Pattern: Implementing It
Field Notes: The Abstract Factory Pattern
Relating the Abstract Factory Pattern to
the CAD/CAM Problem
Summary
Supplement: C++ Code Examples
PART IV
Putting lt AIl Togrther: Thinking In Pattrrns
Chaptrr 11
How Do Expetrts Design?
Overview
Building by Adding Distinctions
Summary
Chaptrr 12
Solving the CAD/CAM Problem wlth Pattrrns_197
Overview
Review of the CAD/CAM Problem
Thinking in Patterns
Thinking in Patterns: Step 1
Thinking in Patterns: Step 2a
Thinking in Patterns: Step 2b
Thinking in Patterns: Step 2c
Thinking in Patterns: Step 2d (Facade)
Thinking in Patterns: Step 2d (Adapter)
Thinking in Patterns: Step 2d (Abstract Factory)
Thinking in Patterns: Step 3
Comparison with the Previous Solution
Summary
Chapter 13
The Principles and Strategies
of Design Patterns
Overview
The Open-Closed Principle
The Principle of Designing from Context
The Principle of Containing Variation
Summary
PART V
Handling Variations with Design Patterns
Chapter 14
The Strategy Pattern
Overview
An Approach to HandIing New Requirements
Initial Requirements of the Casc Study
Handling New Requirements,
The Strategy Pattern
Field Notes: Using the Strategy Pattern
Summary
Chapter 15
The Decorator Pattern
Overview
A Little More Detail
The Decorator Pattern
Applying the Decorator Pattern to the Case Study
Another Example: Input/Output
Field Notes: Using the Decorator Pattern
Summary
SuppIement: C++ Code Examples
Ohapter 16
The Singleton Pattern and the
Double-Checked Locking Pattern
Overview
Introducing the Singleton Pattern
Applying the Singleton Pattern to the Case Study
A Variant: The Double-Checked Locking Pattern
Field Notes: Using the Singleton and
Double-Checked Locking Patterns
Summary
Supplement: C++ Code Examples
Ohapter 17
The Observer Pattern
Overview
Categories of Patterns
More Requirements for the Case Study
The Observer Pattern
Applying the Observer to the Case Study
Field Notes: Using the Observer Pattern
Summary
Supplement: C++ Code Example
chapter 18
The TempIate Method Pattern
Overview
More Requirements for the Case Study.
The Template Method Pattern
Applying the Template Method to the Case Study
Field Notes: Using the Template Method Pattern
Summary
Chapter 19
The Factory Method Pattern
Overview
More Requirements for the Case Study
The Factory Method Pattern
Field Notes: Using the Factory Method Pattern
Summary
Chapter 2O
The Analysis Matrix
Overview
In the ReaI World: Variations
Case Study in Variation: An International E-Tail System
Field Notes
Summary
PART Vl
Endings and Beginnings
chapter 21
Oesign Patterns Reviewed
from the New Perspective of
Object-Orlented Design
Overview
A Summary of Object-Oriented Principles
How Design Patterns Encapsulate Implementations
Commonality/Variability Analysis and Design Patterns
Decomposing a Problem Domain into Responsibilities
Relationships Within a Pattern
Patterns and Contextual Design
Field Notes
Summary
Chapter 22
BibIiography
Design Patterns Explained: The Web Site Companion
Recommended Reading on Design Patterns
and Object orientation
Recommended Reading for Java Programmers
Recommended Reading for C++ Programmers
Recommended Reading for COBOL Programmers
Recommended Reading on eXtreme Programming
Recommended Reading on General Programming
Personal Favorites
INDEX