Design Patterns Elements of Reusable Object - Oriented Software - Gamma Erich; Helm Richard; Johnson Ralph; wissides john (New Delhi Dorling kindersley Publishing Inc, 2013)