Hola, coincido con lo que dice Enrique, a veces tampoco hay que enceguecerse con resolver todo OOP, si tu sistema realmente lo amerita perfecto, te puedo apuntar algo respecto a
switch y
ifs, si tu sistema abusa de ellos es porque realmente no es 100% o quizá ni siquiera lo sea 50%, si esto ocurre tu sistema presenta un acoplamiento importante y deberías estar usando en ese caso el polimorfismo.
En tu problema, donde podes tener diferentes combinaciones de busqueda y no sabes de antemano cuantas combinaciones vas a tener, un diseño elegante sería usar el patrón Decorator, deberias tener una clase abstracta BusquedaDecorator y sus clases que heredan BusquedaAutor, BusquedaEdicion, BusquedaTitulo, etc. y asi una clase por cada atributo sobre el que quieras realizar la búsqueda, esto permite combinar o "decorar" tu búsqueda por todas las combinaciones que necesites, de esta manera agregar o quitar un criterio de busqueda sería transparente para tu diseño.
Saludos.
http://es.wikipedia.org/wiki/Decorat...de_dise%C3%B1o)
Sergio Gabriel Rodriguez
Perdón, cuando escribí "no es 100% o quizá ni siquiera lo sea 50%" me refería a 100% OOP.
Saludos!.
Sergio Gabriel Rodriguez