我正在爲我正在開發的框架構建電子郵件系統。到目前爲止,我有一個通用的接口MAILMESSAGE,每一個不同類型的郵件信息將實行,一些沿設計: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
...
}
線,然後我有一個SimpleMailMessage這正是你所期待的簡單實現什麼的接口(不加密或編碼,只是純文本)。
我創建了一個用作抽象工廠的MailMessageFactory接口。我有一個SimpleMailMessageFactory實現工廠生成SimpleMailMessage的實例。
我希望框架發送的一種類型的電子郵件是一個警報郵件消息,它基本上是一個普通郵件消息,除了在主題行前面加上「[Alert]」(另一個可能是包含訂單項目的「列表」,但我不確定將郵件列表轉換爲字符串的職責所在)。我可以繼承的SimpleMailMessage和覆蓋SETSUBJECT(字符串主題)方法類似
public class AlertMailMessage {
...
public void setSuject(String subject) {
this.to = "[Alert]" + to;
}
...
}
或者,我可以創造一個裝飾:
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);
}
}
或者,我可以只委託添加「[警示] 「SimpleMailMessageFactory中的字符串。
關於我有什麼想法?我認爲問題在於我可能過於考慮周到,有前瞻性,但我想要完美的設計。
JavaMail API將如何幫助我們裝飾我們的消息。我知道我已經將它與Freemarker模板一起使用,以格式化電子郵件。我認爲這個問題就是這個問題。此外,我相信最初的海報會使用相同的JavaMail API。沒有負面演員,順便說一句。 – 2009-05-22 04:43:14