Design patterns for object-oriented software development - Pree, Wolfgang (Addison-Wesley, 1995)