Design patterns in Java (Addison Wesley Longman Limited, 2006)