public interface IsendMessage {
public void send(messageContext context);
}
以上界面用于发送消息。它可以是电子邮件,短信,JMS。这里方法参数接受messageContext。
如何使该泛型接受所有类型的消息的参数。像电子邮件,我们必须,密码,附件,smtp服务器属性
但是SMS有不同的属性。那么我怎样才能使该接口通用化呢。 EmailSender和SmsSender可以实现此IsendMessage接口来发送消息。
这里可以使用任何设计模式吗?
答案 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