introduction to design patterns - Search