design patterns explained - Search