Classical architecture: Widget model

Widgets = complex objects with

many attributes, many methods... -> complexity

...except the one I need... -> lack of flexibility

Static architecture

subclassing is often difficult (or impossible)

hard to reuse features from one widget to another

to many subclasses