Head first design patterns - Freeman, Eric, (Published, 2004)