Skip to content

Instantly share code, notes, and snippets.

@FagnerMartinsBrack
Last active November 4, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FagnerMartinsBrack/9542dfa186e4d2b82b53 to your computer and use it in GitHub Desktop.
Save FagnerMartinsBrack/9542dfa186e4d2b82b53 to your computer and use it in GitHub Desktop.
Notification Facade OO design draft
{
NotificacaoContent content = /* ... constrói teu conteúdo aqui */;
notificacaoFacade.notify( content, beanManager );
}
public class EmailNotificationContent implements NotificationContent {
// Tudo customizado do conteúdo do e-mail
}
public class EmailNotificationFacade implements SessionBean, NotificationFacade {
public void notify( EmailNotificationContent content, BeanManager logged ) throws InvalidContentException, AccessDeniedException, UserNotLoggedException {
// Notifica o sistema (inclui a notificação no banco, etc. o client não precisa saber como isso é feito)
}
}
// Aqui implementamos a "NotificationContent" apenas para utilizar o polimorfismo
// Tem algo que é igual para o conteúdo de todas as notificações? Então adiciona na interface "NotificationContent"
interface NotificationContent {}
public class NotificationFacade {
notify( NotificationContent content, BeanManager logged ) throws InvalidContentException, AccessDeniedException, UserNotLoggedException;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment