introduction to the concept of design patterns 405987