take for example a document processing system ...
- material - words, images, tables
- formatting, layout
- online presentation and editing tool

managing composites
problem -- very many items
solution -- flyweight class

managing layout and formatting
problem -- many algorithms
solution -- composer (strategy) class

display item with attributes
problem -- non-uniform attributes
solution -- embed and hide attributes

develop multi-platform tools (1)
problem -- different window toolkits
solution -- employ platform-specific factories

develop multi-platform tools (2)
problem -- offer uniform widget hierarchy
solution -- separate interface from implementation

provide rich functionality
problem -- support commands with undo
solution -- abstract from specific commands
