如何更改以下接口以接受不同类型邮件系统的参数.任何设计模式


public interface IsendMessage {
public void send(messageContext context);
}

上面的接口用于发送消息。 它可以是电子邮件,短信,JMS。 这里的方法参数接受消息上下文。

我怎样才能使它通用以接受所有类型的消息的参数。 像电子邮件一样,我们必须, 从 , 密码, 附加 , SMTP 服务器属性

但是 短信有不同的属性 . 那么我怎样才能使该接口通用。EmailSender 和 SmsSender 可以实现此 IsendMessage 接口来发送消息。

这里可以使用任何设计模式?

我不知道

这是否有名字,但我会选择这样的东西:

public interface IsendMessage<T extends MessageContext> {
    public void send(T context);
}
public interface MessageContext {
};
public class SMSMessageContext implements MessageContext{}
public class SMSSender implements IsendMessage<SMSMessageContext>{
    @Override
    public void send(SMSMessageContext context) {
    }
}

其中,您的IsendMessage使用通用类型的MessageContext。通过这种方式,IsendMessage 实现可以访问具体类型的 MessageContext 及其所有方法。在MessageContext中,根据其具体类型,您可以放置发送消息所需的任何内容,即:对于电子邮件:收件人,发件人,主题,对于短信:短信文本,电话号码

最新更新