Cookbook of Java design patterns.