interface CanalEnvio { void enviarMensagem(String titulo, String conteudo); } class EmailCanal implements CanalEnvio { public void enviarMensagem(String titulo, String conteudo) { System.out.println("Email: " + titulo); } }
abstract class Notificacao { protected CanalEnvio canal; public Notificacao(CanalEnvio canal) { this.canal = canal; } public abstract void enviar(String titulo, String conteudo); }
class NotificacaoSimples extends Notificacao { public NotificacaoSimples(CanalEnvio canal) { super(canal); } public void enviar(String titulo, String conteudo) { canal.enviarMensagem(titulo, conteudo); } }
AvisoAcademico aviso = new AvisoUrgente(new PushNotificacao()); aviso.disparar();
AvisoUrgente
PushNotificacao