Vissides J - Gamma, E; Johnson, R; Helm, R (Elements of reusable object-oriented software. Addison-Wesley Professional, 1995)