Design patterns

Typical solutions to common problems in software design.