Created
March 6, 2011 19:17
-
-
Save eamodeorubio/857561 to your computer and use it in GitHub Desktop.
Esta clase viola el SRP y algunas cosas más (very bad things)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class AuditorTransferenciasMonetarias { | |
/* Ahora la clase implementa lógica de negocio "pura" | |
* y es independiente de la plataforma (a.k.a. framework) | |
*/ | |
private DirectorioEmpleados directorioEmpleados; | |
private SistemaMensajeriaCorporativa mensajero; | |
private PlantillasCorporativas almacenDePlantillas; | |
/* No se muestra todo el código */ | |
public void transferenciaRealizada(Transferencia transferencia) { | |
if(transferencia.esImportante()) { | |
this.mensajero | |
.enviar( | |
new Mensaje() | |
.a(interesadosEnTransferenciasImportantes() | |
.conContenido(this.componerMensajeAviso(transferencia)) | |
); | |
} | |
} | |
private Documento componerMensajeAviso(Transferencia transferencia) { | |
return this.almacenDePlantillas.usandoPlantilla("avisos/transferencia-importante").crearDocumentoCon(transferencia); | |
} | |
private List<Empleado> interesadosEnTransferenciasImportantes() { | |
return this.directorioEmpleados.empleadosConRol(Empleado.INTERESADOS_TRANSFERENCIAS_IMPORTANTES); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Para aislar a la clase de cambios en el framework, usamos tres interfaces de negocio, PlantillasCorporativas, Plantilla y Documento.
Ahora si cambiamos de framework esta clase no hay que tocarla. Además, en vez de usar String, usamos Documento, que podría (si fuera necesario) saber como serializarse en String, en array de bytes, en HTML, en XML o en JSON, según le interese a la implementación concreta de SistemaMensajeriaCorporativa que usemos.