OOP Design Patterns Java - Search