Java Design Patterns - Search