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.

## S

scope of design pattern, see design pattern, scope
Scrollbar 50c
ScrollDecorator176o, 176c
Scroller 45, 46o
Self 4, 121, 309
sender
  decoupling from receiver 346
SequenceExpression 244co, 343
  implemented in Smalltalk 249
sequencing requests 234
shallow copy, see copy, shallow
Shape 139, 140c, 146
shrinkability 320
signature 13, 361
SimpleCompositor 42, 42c, 315, 315c, 321
single static assignment form, SSA 172
single-dispatch, see dispatch, single
SINGLETON 127
  C++ implementation 129, 131
  in catalog summary 9
  registry of 130
  subclassing 130
  used to implement ABSTRACT FACTORY 90
Singleton
  participant of SINGLETON 127c, 128
Sketchpad 125
SkipList 258c, 265
skiplist 258
Smalltalk-80, see also ObjectWorks\Smalltalk, Smalltalk/V
  use of BUILDER 105
  use of COMPOSITE 172
  use of FACTORY METHOD 115
  use of INTERPRETER 251
  use of ITERATOR 270
  use of OBSERVER 303
  use of SINGLETON 133
  use of VISITOR 344
Smalltalk/V
  use of INTERPRETER 251
  use of MEDIATOR 278, 281
smart pointers 209
smart references 209
software platform
  isolating application from 24
Solitaire, see SINGELTON
SolverState283-284
SPECTalk
  use of INTERPRETER 255
spelling checking 64
SpellingChecker 71-73
SpellingCheckerVisitor75
StandardMazeBuilder 103
STATE 305
  C++ idiom for, see envelope-letter idiom
  in catalog summary 9
  use of delegation in 21
State
  participant of STATE 306, 306c
state
  accumulating during traversal 336
  avoiding inconsistent 308
  extrinsic 196
  incremental changes to 287
  intrinsic 196
  sharing 308, see also FLYWEIGHT
state transitions
  atomic 308
  defining 308
  table-driven 308
STRATEGY 315
  compared with DECORATOR 179
  in catalog summary 8
  Lexi's use of 42
  use in Choices 193
  use in Model/View/Controller 6
  use of delegation in 21
Strategy 180o
  making optional 320
  participant of STRATEGY 316c, 316
strategy 315
Stream 183, 183c
StreamDecorator183, 183c
stretchability 320
Stroustrup, Bjarne 160
structural pattern 10, 137
  comparison between class and object scope 137
  discussion of 219
subclass, see class, subclass
subclassing
  extending functionality by 24
Subject 301
  avoiding dangling references to 297
  combining with Observer300
  participant of OBSERVER 294c, 295, 295i, 300c, 347i
  participant of PROXY 209co, 210
subject 294
  mapping to observers 297
  observing more than one 297
subsystem 361
  simplifying interface to, see FACADE
subtype, see type, subtype
successor 224
  connecting in chain 227
  implementing chain of 225
superclass 361, see also class, parent
supertype, see type, supertype
Surrogate, see PROXY
Sutherland, Ivan 125
swaps 323