yoLUkAsss / rentauto

Base para todos los TP de la materia
0 stars 0 forks source link

Generador de código #3

Open aitrusgit opened 9 years ago

aitrusgit commented 9 years ago

Así como hoy por hoy su servicio depende solamente de la interfaz de MailService y para los tests proveemos una implementación mock ustedes podrían fácilmente abstraer la generación del código de validación en algún otro objecto del cual el servicio solo dependa.

Para los tests podrían inyectarle una implementación que solo haga esto:

class GeneradorCodigoDummy implements GenerdorCodigo {
    def generarCodigo() {
        return new Integer(nuevoUsuario.hashCode()).toString()
    }
}

Y en su servicio ustedes no tendrían mas código dumy :)

Ramshell commented 9 years ago

No entiendo bien a que te referis con inyectarle la implementacion. Entiendo que ese codigo deberia estar en el paquete test para no ensuciar el codigo. Entonces nuestro sistema pasaria a depender de que el generador de codigo "real" implemente GeneradorCodigo como de MailService?

Desde ya gracias.

aitrusgit commented 9 years ago

Por inyectarle la implementación me refiero a setearsela desde afuera.

Lo que decís es correcto, tu sistema solo estaría acoplado a la interfaz GeneradorCodigo y el día de mañana, cuando alguien implemente un algoritmo posta para generar códigos, solamente tiene que implementar esa interfaz y setearsela a tu servicio, sin cambiar código de este.

Hay toda una tendencia en objetos (que en algún momento tuvo mucha fuerza, ahora medio que es algo casi standard) que consiste delegar la construcción y configuración de los objetos en alguien mas (https://en.wikipedia.org/wiki/Dependency_injection). Igual este párrafo es a modo anecdotico.