Behavioral patterns, Introduction to Design patterns