Java Design Pattern Essentials - Second Edition