如何更改以下接口以接受不同类型的消息传递系统的参数。任何设计模式?

时间:2015-12-05 09:31:46

标签: java design-patterns

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

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

如何使该泛型接受所有类型的消息的参数。像电子邮件,我们必须,密码,附件,smtp服务器属性

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

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

1 个答案:

答案 0 :(得分:0)

我不知道这是否有名字,但我会用这样的东西:

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中,根据其具体类型,您可以放置​​任何需要发送消息的内容,即:用于电子邮件:to,from,topic,sms:sms text,phone number