Structural patterns, Introduction to Design patterns