Design patterns in Java - Metsker, Steven John (The software patterns series, 2006)