Je suis en train de construire un système d'emailing pour un framework que je développe. Jusqu'à présent, j'ai une interface MailMessage générique que tout autre type de message mettra en œuvre, quelque chose le long des lignes deConception: Emailing System in Java
public interface MailMessage {
public String[] getTo();
public void setTo(String[] to);
public String getFrom();
public void setFrom(String from);
...
// you can guess the setters/getters here
...
}
J'ai alors eu un SimpleMailMessage qui est exactement ce que vous attendez une mise en œuvre simple, de l'interface (pas de cryptage ou d'encodage, juste du texte brut).
J'ai créé une interface MailMessageFactory utilisée comme fabrique abstraite. J'ai un SimpleMailMessageFactory qui implémente l'usine pour produire des instances de SimpleMailMessage. Un type d'email que je voudrais envoyer à l'infrastructure est un message d'alerte, c'est-à-dire essentiellement un message régulier, sauf que "[Alert]" est préfixé à la ligne d'objet (un autre peut être un e-mail contenant un "liste" des éléments de la commande, mais je ne suis pas sûr de la responsabilité de la conversion de la liste en String pour un email. Je peux soit sous-classe le SimpleMailMessage et passer outre la setSubject méthode (String sujet) à quelque chose comme
public class AlertMailMessage {
...
public void setSuject(String subject) {
this.to = "[Alert]" + to;
}
...
}
Ou je peux créer un décorateur:
public abstract class EmailDecorator implements MailMessage {
protected MailMessage email;
...
// delegate all implemented methods to email
...
}
public class AlertEmailDecorator extends EmailDecorator {
public void setSubject(String subject) {
email.setSubject("[Alert]" + subject);
}
}
Ou je peux déléguer ajouter le « [Alerte] "chaîne dans SimpleMailMessageFactory.
Réflexions sur ce que j'ai? Je pense que le problème est que je pourrais être trop réfléchi et avant-gardiste, mais je veux le design parfait.
Et comment l'API JavaMail va nous aider à décorer nos messages. Je sais que je l'ai utilisé avec des modèles Freemarker afin de formater les messages électroniques. Et je pense que cette question est à ce sujet. En outre, je crois que l'affiche originale utiliserait la même API JavaMail, de toute façon. Pas de fonte négative, BTW. –