Cita: Como veras..... esas dos funciones son bastante diferentes excepto por algunos chequeos de tipo Runtime ... pero en ambas debo ahora agregar la parte de DEEP_SEARCH que seria si quiero que las busquedas se hagan lineales o como un DomNodeList donde hay una "profundidad" involucrada y... eso se podria hacer metiendo algunos IF aqui y alla en ambas dos funciones......
Entonces.... hago de las dos funciones solo una ? hago de esas dos, cuatro ? las coloco como clase aparte especializada en busquedas ?
Según veo estas tratando de implementar algoritmos de búsqueda como objetos y quieres que el cliente pueda intercambiar estos objetos de acuerdo a ciertas condiciones. De ser así usa el patrón Strategy:
http://sourcemaking.com/design_patterns/strategy