Erich Gamma 0 881 Design Patterns Elements of Reusable Object-Oriented Software – Erich Gamma – 1st Edition