2009-05-22 9 views
0

私が開発しているフレームワーク用の電子メールシステムを構築しています。これまでのところ、私は、あなたが簡単な実装として期待まさにそれだSimpleMailMessageを持ってデザイン: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 
    ... 
} 

の線に沿って一般的なはMailMessage電子メールメッセージのすべての異なる種類が実装するインタフェース、何かを持っています(暗号化も暗号化もなく、プレーンテキストのみ)。

私は、抽象ファクトリとして使用されるMailMessageFactoryインターフェイスを作成しました。 SimpleMailMessageのインスタンスを生成するためにファクトリを実装するSimpleMailMessageFactoryがあります。

フレームワークに送信するフレームワークの1つのタイプは、アラートメールメッセージです。これは本質的には、[アラート]を件名の前に付けた通常のメールメッセージです(もう1つは注文項目の「リスト」は、電子メールの文字列にリストを変換するための責任がどこにあるのかはわかりません。私はデコレータを作成することができSimpleMailMessageをサブクラス化し

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

など何かにsetSubject(String型の主題)メソッドをオーバーライドすることができ、次のいずれか

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の文字列。

私には何がありますか?問題は私があまりにも思慮深く先を見越しているかもしれないと思うが、私は完璧なデザインが欲しい。

答えて

1

デコレータは私にとっては良い選択肢のようです。私はあなたの件名に「Fwd:」または「Re:」を追加する必要があるかもしれないと思っています。あるいは、電子メール本文に署名を追加する際に署名をサポートする必要があるかもしれません。

1

デコレータはより良い選択肢のようです。しかし、なぜあなたは自分の電子メールフレームワークをJava用に書いていますか?なぜJavaMail APIを使用しないのですか?

+0

JavaMail APIが私たちのメッセージを飾るのにどのように役立つか。私は電子メールメッセージをフォーマットするためにFreemarkerのテンプレートでそれを使用したことを知っています。そして、私はこの質問がそれに関するものだと思います。さらに、オリジナルのポスターは、とにかく同じJavaMail APIを使用すると考えています。ネガティブキャストはありません。 –

1

JavaMailのSpringのサポートと同じように聞こえます。ホイールを再構成したり、既存の実績のあるソリューションを使用したり、その上に構築したりしないでください。

+0

@Chochosあなたは正しいですが、私の場合、Springはjavamailがサポートするものだけに制限されているのに対し、私は別の電子メールサービスプロバイダを提供する必要があります。 – djunforgetable

関連する問題