class Principal {
public static void main(String[] args) {
ServicioImpresion miServicio = new ServicioImpresion(new ServicioEnvioAspecto(), new ServicioPDF());
miServicio.imprimir();
}
}
class ServicioImpresion {
ServicioEnvio servicioA;
ServicioPDF servicioB;
public ServicioImpresion(ServicioEnvio servicioA,ServicioPDF servicioB) {
this.servicioA= servicioA;
this.servicioB= servicioB;
}
public void imprimir() {
servicioA.enviar();
servicioB.pdf();
}
}
class ServicioEnvio {
public void enviar() {
System.out.println("enviando el documento a imprimir ");
}
}
class ServicioPDF {
public void pdf() {
System.out.println("imprimiendo el documento en formato pdf");
}
}
class ServicioEnvioAspecto extends ServicioEnvio {
@Override
public void enviar() {
System.out.println("haciendo log del correo que vamos a enviar");
super.enviar();
}
}