Frage

Ich baue ein E-Mail-System für einen Rahmen Ich entwickle. Bis jetzt habe ich eine generische Schnittstelle Mailmessage bekam, dass jede andere Art von E-Mail-Nachricht wird implementieren, etwas entlang der Linien von

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
    ...
}

Ich habe dann eine SimpleMailMessage, die genau das, was Sie als eine einfache Implementierung der Schnittstelle (keine Verschlüsselung oder Codierung, nur Klartext) erwarten.

Ich habe eine MailMessageFactory Schnittstelle geschaffen, die als eine abstrakte Fabrik verwendet wird. Ich habe eine SimpleMailMessageFactory bekam, der die Fabrik implementiert Instanzen von SimpleMailMessage zu erzeugen.

Eine Art von E-Mail-I Rahmen Alarm eine Mail-Nachricht senden möchten, das ist im Wesentlichen eine regelmäßige Mail-Nachricht, außer mit „[Alert]“ in die Betreffzeile das Präfix (Eine andere könnte eine E-Mail enthält eine " Liste“der Auftragspositionen, aber ich bin nicht sicher, wo die Verantwortung fällt die Liste in einen String für eine E-Mail liegt für die Umwandlung). Ich kann entweder die SimpleMailMessage Unterklasse und die setSubject (String subject) Methode um so etwas wie

außer Kraft setzen
public class AlertMailMessage {
    ...
    public void setSuject(String subject) {
        this.to = "[Alert]" + to;
    }
    ...
}

oder ich kann einen Dekorateur erstellen:

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);
    }
}

Oder kann ich einfach delegieren "[Alert]" Zeichenfolge im SimpleMailMessageFactory hinzugefügt wird.

Die Gedanken auf das, was ich habe? Ich denke, das Problem ist, dass ich zu nachdenklich sein könnte und vorausdenkende, aber ich will das perfekte Design.

War es hilfreich?

Lösung

Ein Dekorateur scheint eine bessere Option für mich. Ich denke dabei an, sein können Sie Ihre Betreffzeile mit, Fwd: oder Re: auch anfügen müssen, oder sein können Sie Unterschrift unterstützen müssen, wo Sie eine Signatur der E-Mail Körper hinzugefügt werden.

Andere Tipps

Der Dekorateur scheint, wie die bessere Option. Aber warum schreiben Sie Ihre eigene E-Mail-Framework für Java? Warum nicht einfach den Javamail-API verwenden?

Sounds ebenso wie die Unterstützung des Frühlings für Java Mail. Das Rad nicht, verwenden Sie neu erfinden bereits bestehende, bewährte Lösungen und obendrein bauen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top