gpt4 book ai didi

java - 设计: Emailing System in Java

转载 作者:行者123 更新时间:2023-12-02 00:55:24 26 4
gpt4 key购买 nike

我正在为我正在开发的框架构建一个电子邮件系统。到目前为止,我已经有了一个通用的 MailMessage 接口(interface),每种不同类型的电子邮件都会实现该接口(interface),类似于

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,它正是您所期望的接口(interface)的简单实现(没有加密或编码,只是纯文本)。

我创建了一个用作抽象工厂的 MailMessageFactory 接口(interface)。我有一个 SimpleMailMessageFactory,它实现工厂来生成 SimpleMailMessage 的实例。

我希望框架发送的一种类型的电子邮件是警报邮件消息,它本质上是常规邮件消息,除了主题行前面带有“[Alert]”前缀(另一种可能是包含“订单项目的列表”,但我不确定将列表转换为电子邮件字符串的责任在哪里)。我可以继承 SimpleMailMessage 并将 setSubject(String subject) 方法重写为类似

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

或者我可以委托(delegate)在 SimpleMailMessageFactory 中添加“[Alert]”字符串。

对我有什么想法?我认为问题在于我可能过于深思熟虑和前瞻性,但我想要完美的设计。

最佳答案

装饰器对我来说似乎是更好的选择。我正在考虑,您可能还需要在主题行后附加 Fwd:Re:,或者您可能需要支持签名在电子邮件正文中添加签名。

关于java - 设计: Emailing System in Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/896093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com