The aim of this book are simple - to make design patterns accessible and useful to the average developer. To this end the authors make a point of explaining both the history and background of the design patterns movement and also looking at the problems this movement set out to address in the world of object oriented development. This context is important because without it understanding of design patterns can be severely restricted. Knowing when and how to apply the patterns is more than half the battle.
Following this background material, along with a chapter that introduces UML, the book presents a real-world problem to tackle. The problem, how to extract information from a CAD/CAM system, is used both to illustrate the limitations of traditional object oriented design and to show how design patterns provide simpler and more elegant solutions."