Names of design patterns appear in small capitals: e.g., ADAPTER. Page numbers in bold indicate the definition of a term. Numbers in italics indicate a diagram for the term. Letters after a diagram's page number indicate the kind of diagram: a "c" denotes a class diagram, an "i" denotes an interaction diagram, and an "o" denotes an object diagram. For example, 88co means that a class and object diagram appears on page 88.

## D

data member 360
DebuggingGlyph 182
DECORATOR 175
  compared with ADAPTER 175, 184
  compared with COMPOSITE 44, 173, 219-220
  compared with PROXY 216, 219-220
  compared with STRATEGY 179
  in catalog summary 8
  Lexi's use of 45c, 46o, 47
  lightweight versus heavyweight 179
Decorator 176, 180
  participant of DECORATOR 177, 177c, 180o
decorator 175
decoupling, see also coupling, loose
  interface and implementation 154
  senders and receivers 346
deep copy, see copy, deep
delegate 20, 144
delegation 20, 278, 360
  compared with inheritance 20-21
  implementing pluggable adapters with 144
  patterns that rely on 21
dependency 293
  managing complex 299
Dependents, see OBSERVER
derived class, see class, derived
design
  déjà-vu 2
  density 358
  documenting with patterns 27, 352
  for change 23
  poetry of 356
  for reuse 23
design object model 353
design pattern 360
  adjunct to design methodology 353
  aspects of design varied by 30
  benefits 351
  catalog summary 8
  catalog template 6
  classification 10
  compared with frameworks 28
  diagram of relationships 12
  documenting designs with 27, 352
  essential elements 3
  finding 355
  history of 355
  how to use 29
  purpose 10
  refactoring with 353
  scope 10
  selection of 28
  table of 10
destructor 360
  ensuring iterator's is called 266
Dialog 223, 231
DialogDirector 274o, 275ci, 278
DialogWindow 53, 54c, 55c
DigitalClock 302
Director
  participant of BUILDER 98c, 99, 99i
DirectoryBrowser 144, 144c, 145c
discretionary glyph 75
dispatch
  double 338
  multiple 339
  single 338
Doc 205, see also Lexi
Document 107, 107c, 233c, 234, 234c, 325, 325c
document
  color 42, 322
  formatting 40
  logical structure 40
  physical structure 35
documenting design with patterns 27, 352
doesNotUnderstand message
  used to implement CHAIN OF RESPONSIBILITY 229
  used to implement PROXY 212, 215
Domain 192, 192c
Door 82c, 83
  extensions for PROTOTYPE 123
double-dispatch, see dispatch, double
downcast 91
Dylan 4
  use of MEMENTO 289
dynamic binding 14, 360
dynamic inheritance 309
dynamic_cast in C++ 91, 168