Java™ Design Patterns: A Tutorial - James W. Cooper