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.

C

C 4
Calder, Paul 33, 38
callback function 235
Caretaker
participant of MEMENTO 285, 285c, 286i
Cargill, Tom 308
CHAIN OF RESPONSIBILITY 223
combined with Composite 166, 232
compared with MEDIATOR 348
compared with OBSERVER 348
defined by parent references 166, 232
in catalog summary 8
use of delegation in 21
ChangeManager , 299, 300c
Character 38, 38c
character
represented as object 38, 195-196
Cheshire Cat 155
Choices operating system
use of Facade 192
use of PROXY 209
class 14, 359
abstract, see abstract class
adapter, see adapter, class
compared with type 16
concrete, see concrete class
derived 360
friend, see friend class
inability to alter 24
inheritance, see inheritance
instance 15
library, see toolkit
mixin, see mixin class
notation for 15, 363
parent 15, 361
subclass 15
template, see template
class diagram 363, 365c, 359
class hierarchy
adding operations to 356
connecting parallel 109, 258
explosion 25, 43, 151, 177
minimizing size of 113, 120, 177, 277, 317, 348
visiting multiple 336
class operation 359
alternatives provided by Singleton 128
Client
participant of ABSTRACT FACTORY 88c, 89
participant of ADAPTER 141, 141c
participant of Builder 98, 98c, 99i
participant of CHAIN OF RESPONSIBILITY 225ci, 226, 348i
participant of COMMAND 236, 236c, 237i
participant of Composite 164c, 165
participant of Flyweight 198c, 199
participant of Interpreter 245c, 246
participant of PROTOTYPE 119, 119, 119c
client 11
isolating concrete classes from 89
ClockTimer 302
clone operation 117
used in PROTOTYPE 117
implementing 121
cloned object 117
initializing 121
CLOS 4, 260, 338
closure 260, 267
Coad, Peter 357
code structure
run-time versus compile-time 23
CodeGenerationVISITOR 332c
Colleague
communicating with MEDIATOR 278, 282
participant of MEDIATOR 276co, 277, 348i
COMMAND 233
combined with MEMENTO 239, 287
combined with PROTOTYPE 238
in catalog summary 8
use in Lexi 64
COMMAND 60, 61c, 233, 233c, 239
configured in MenuItem 61
history of 62
participant of COMMAND 236, 236c, 237i, 347i
command
C++ idiom, see functor
copying before execution 238
history, see history list
implemented through C++ templates 239, 240
intelligence of 238
common vocabulary 352
communication
encapsulated or distributed 346
between Strategy and Context 318
between VISITOR and Element 337
compilation dependencies
reducing using Facade 188
Compiler 185, 186c, 191
compiler
example in Facade 185, 186c, 188
implemented using VISITOR 331
Smalltalk, see RTL Smalltalk compiler
Component
participant of Composite 164c, 165, 168
participant of DECORATOR 177, 177c
Composite 163
caching children of 169
child management 167
combined with Interpreter 255
combined with ITERATOR 262
combined with VISITOR 339
compared with DECORATOR 219, 220
compared with Interpreter 247
data structure for 169, 170
in catalog summary 8
interface of 167
Lexi's use of 40
parent references 166
sharing components 166
use in Model/View/Controller 5
Composite
participant of Composite 164c, 165, 165o, 168
CompositeEquipment 171
Composition 41, 42c, 315, 315c, 320
composition, see object composition
Compositor 41, 42, 315, 315c, 321
interface 41
CompressingStream 183c, 184
concrete class 15, 359
avoiding specification of 24
isolating clients from 89
ConcreteAggregate
participant of ITERATOR 259, 259c
ConcreteBuilder
participant of Builder 98c, 99, <99i
ConcreteCOMMAND
participant of COMMAND 236, 236c, 238
ConcreteComponent
participant of DECORATOR 177, 177c
ConcreteDECORATOR
participant of DECORATOR 177c, 178
ConcreteElement
participant of VISITOR 334, 334c, 335i
ConcreteFactory
participant of ABSTRACT FACTORY 89
ConcreteFlyweight
participant of Flyweight 198co, 199
ConcreteHandler
participant of CHAIN OF RESPONSIBILITY 225c, 226
ConcreteImplementor
participant of BRIDGE 153c, 154
ConcreteITERATOR
participant of ITERATOR 259, 259c
ConcreteOBSERVER
participant of OBSERVER 294c, 295, 295i
ConcreteProduct
participant of ABSTRACT FACTORY 88, 89
participant of FACTORY METHOD 108, 108c>
ConcretePROTOTYPE
participant of PROTOTYPE 119, 119c
ConcreteState
participant of STATE 307, 307c
ConcreteStrategy
participant of Strategy 316c, 316
ConcreteSubject
participant of OBSERVER 294c, 295, 295i
ConcreteVISITOR
participant 334, 334c, 335i
conditional statements
avoiding using STATE 307
avoiding using Strategy 317
consolidation phase of lifecycle 353
constraint solving 282, 283
see also ThingLab, QOCA
ConstraintSolver 283-284, 288
constructor 360
Context 252
participant of Interpreter 245c, 246
participant of STATE 306, 306c
participant of Strategy 316c, 316
control flow
encapsulating, see MEDIATOR
inversion of 27
Coplien, James 125, 153, 160, 242, 313, 357
copy
deep 121
on write 210
shallow 121
CountingMazeBuilder 104
coupling 360
abstract 188, 278, 296, 359
loose 24, 26, 277, 347, see also decoupling
reducing 24, 187, 188, 223, 226
tight 24,
CreateMaze operation A HREF="chap3-0.htm#CreateMaze-def" onClick="top.load('3');">84
ABSTRACT FACTORY variant (C++) 92
ABSTRACT FACTORY variant (Smalltalk) 94
Builder variant 102
FACTORY METHOD variant 114
PROTOTYPE variant (Smalltalk) 123, 125
creational pattern 10, 81
discussion of 135
Creator
participant of FACTORY METHOD 108, 108c
implementation of 111, 113
Cursor, see ITERATOR
cursor, see iterator, cursor