search for books and compare prices
Tables of Contents for Design Patterns Explained
Chapter/Section Title
Page #
Page Count
Preface
xv
 
From Object Orientation to Patterns to True Object Orientation
xvi
 
From Artificial Intellegence to Patterns to True Object Orientation
xxi
 
A Note About Conventions Used in This Book
xxiv
 
Feedback
xxv
 
Acknowledgments
xxvi
 
PART I An Introduction to Object-Oriented Software Development
1
42
The Object-Oriented Paradigm
3
26
Overview
3
1
Before The Object-Oriented Paradigm: Functional Decomposition
4
2
The Problem of Requirements
6
1
Dealing with Changes: Using Functional Decomposition
7
3
Dealing with Changing Requirements
10
4
The Object-Oriented Paradigm
14
8
Object-Oriented Programming in Action
22
2
Special Object Methods
24
2
Summary
26
3
The UML---The Unified Modeling Language
29
14
Overview
29
1
What Is the UML?
29
2
Why Use the UML?
31
1
The Class Diagram
31
7
Interaction Diagrams
38
2
Summary
40
3
PART II The Limitations of Traditional Object-Oriented Design
43
26
A Problem That Cries Out for Flexible Code
45
12
Overview
45
1
Extracting Information from a CAD/CAM System
45
1
Understand the Vocabulary
46
2
Describe the Problem
48
3
The Essential Challenges and Approaches
51
4
Summary
55
2
A Standard Object-Oriented Solution
57
12
Overview
57
1
Solving with Special Cases
57
8
Summary
65
1
Supplement: C++ Code Examples
66
3
PART III Design Patterns
69
114
An Introduction to Design Patterns
71
16
Overview
71
1
Design Patterns Arose from Architecture and Anthropology
72
5
Moving from Architectural to Software Design Patterns
77
3
Why Study Design Patterns?
80
4
Other Advantages to Studying Design Patterns
84
2
Summary
86
1
The Facade Pattern
87
8
Overview
87
1
Introducing the Facade Pattern
87
1
Learning the Facade Pattern
88
3
Field Notes: The Facade Pattern
91
1
Relating the Facade Pattern to the CAD/CAM Problem
92
1
Summary
93
2
The Adapter Pattern
95
14
Overview
95
1
Introducing the Adapter Pattern
96
1
Learning the Adapter Pattern
96
7
Field Notes: The Adapter Pattern
103
3
Relating the Adapter Pattern to the CAD/CAM Problem
106
1
Summary
106
1
Supplement: C++ Code Example
107
2
Expanding Our Horizons
109
14
Overview
109
1
Objects: the Traditional View and the New View
110
2
Encapsulation: the Traditional View and the New View
112
3
Find What Is Varying and Encapsulate It
115
4
Commonality/Variability and Abstract Classes
119
2
Summary
121
2
The Bridge Pattern
123
40
Overview
123
1
Introducing the Bridge Pattern
123
2
Learning the Bridge Pattern: An Example
125
11
An Observation About Using Design Patterns
136
2
Learning the Bridge Pattern: Deriving It
138
12
The Bridge Pattern in Retrospect
150
1
Field Notes: Using the Bridge Pattern
150
5
Summary
155
2
Supplement: C++ Code Examples
157
6
The Abstract Factory Pattern
163
20
Overview
163
1
Introducing the Abstract Factory Pattern
163
1
Learning the Abstract Factory Pattern: An Example
164
7
Learning the Abstract Factory Pattern: Implementing It
171
4
Field Notes: The Abstract Factory Pattern
175
4
Relating the Abstract Factory Pattern to the CAD/CAM Problem
179
1
Summary
179
1
Supplement: C++ Code Examples
180
3
PART IV Putting It All Together: Thinking in Patterns
183
44
How Do Experts Design?
185
12
Overview
185
1
Building by Adding Distinctions
185
9
Summary
194
3
Solving the CAD/CAM Problem with Patterns
197
20
Overview
197
1
Review of the CAD/CAM Problem
197
2
Thinking in Patterns
199
1
Thinking in Patterns: Step 1
199
1
Thinking in Patterns: Step 2a
200
6
Thinking in Patterns: Step 2b
206
4
Thinking in Patterns: Step 2c
210
1
Thinking in Patterns: Step 2d (FAcade)
210
2
Thinking in Patterns: Step 2d (Adapter)
212
1
Thinking in Patterns: Step 2d (Abstract Factory)
213
1
Thinking in Patterns: Step 3
213
1
Comparison with the Previous Solution
214
1
Summary
215
2
The Principles and Strategies of Design Patterns
217
10
Overview
217
1
The Open-Closed Principle
218
1
The Principle of Designing from Context
218
5
The Principle of Containing Variation
223
1
Summary
224
3
PART V Handling Variations with Design Patterns
227
76
The Strategy Pattern
229
12
Overview
229
1
An Approach to Handling New Requirements
229
3
Initial Requirements of the Case Study
232
1
Handling New Requirements
233
4
The Strategy Pattern
237
2
Field Notes: Using the Strategy Pattern
239
1
Summary
240
1
The Decorator Pattern
241
14
Overview
241
1
A Little More Detail
241
2
The Decorator Pattern
243
1
Applying the Decorator Pattern to the Case Study
244
4
Another Example: Input/Output
248
2
Field Notes: Using the Decorator Pattern
250
2
Summary
252
1
Supplement: C++ Code Examples
252
3
The Singleton Pattern and the Double-Checked Locking Pattern
255
8
Overview
255
1
Introducing the Singleton Pattern
256
1
Applying the Singleton Pattern to the Case Study
256
2
A Variant: The Double-Checked Locking Pattern
258
3
Field Notes: Using the Singleton and Double-Checked Locking Patterns
261
1
Summary
261
1
Supplement: C++ Code Examples
262
1
The Observer Pattern
263
16
Overview
263
1
Categories of Patterns
263
2
More Requirements for the Case Study
265
1
The Observer Pattern
266
1
Applying the Observer to the Case Study
267
7
Field Notes: Using the Observer Pattern
274
1
Summary
275
1
Supplement: C++ Code Examples
276
3
The Template Method Pattern
279
6
Overview
279
1
More Requirements for the Case Study
279
1
The Template Method Pattern
280
1
Applying the Template Method to the Case Study
280
2
Field Notes: Using the Template Method Pattern
282
2
Summary
284
1
The Factory Method Pattern
285
6
Overview
285
1
More Requirements for the Case Study
285
2
The Factory Method Pattern
287
1
Field Notes: Using the Factory Method Pattern
287
2
Summary
289
2
The Analysis Matrix
291
12
Overview
291
1
In the Real World: Variations
291
1
Case Study in Variation: An International E-Tail System
292
7
Field Notes
299
3
Summary
302
1
PART VI Endings and Beginnings
303
20
Design Patterns Reviewed from the New Perspective of Object-Oriented Design
305
8
Overview
305
1
A Summary of Object-Oriented Principles
305
1
How Design Patterns Encapsulate Implementations
306
1
Commonality/Variability Analysis and Design Patterns
307
1
Decomposing a Problem Domain into Responsibilities
308
1
Relationships Within a Pattern
309
1
Patterns and Contextual Design
310
1
Field Notes
311
1
Summary
311
2
Bibliography
313
10
Design Patterns Explained: The Web Site Companion
313
1
Recommended Reading on Design Patterns and Object Orientation
314
2
Recommended Reading for Java Programmers
316
1
Recommended Reading for C++ Programmers
317
1
Recommended Reading for COBOL Programmers
317
1
Recommended Reading on eXtreme Programming
318
1
Recommended Reading on General Programming
318
1
Personal Favorites
319
4
Index
323