Gamma, Erich ;Helm,Richard and Johnson,Ralph Design Patterns Elements of Reusable Object - Oriented Software - Massachusetts Addison- Wesley - 395