以上界面用于发送消息。 它可以是电子邮件,短信,JMS。 这里方法参数接受messageContext。
如何使该泛型接受所有类型的消息的参数。 像电子邮件我们必须,密码,附件,smtp服务器属性
但SMS具有不同的属性。 那么如何让这个界面通用呢? EmailSender和SmsSender可以实现此IsendMessage接口来发送消息。
这里可以使用任何设计模式吗?
public interface IsendMessage { public void send(messageContext context); }Above interface is for sending message. it can be email, SMS , JMS. here method parameter accepts messageContext.
how can i make that generic to accept parameters for all type of messages. like email we have to, from , password, attachement , smtp server properties
But SMS has different properties . so how can i make that interface generic so that. EmailSender and SmsSender can implement this IsendMessage interface to send messages.
Any design pattern can be used here ?
最满意答案
我不知道这是否有名字,但我会用这样的东西:
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
I dont know if this have name but i would go with something like this:
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) { } }where your IsendMessage uses generic type of MessageContext. This way IsendMessage implementation has access to concrete type of MessageContext and its all methods. In MessageContext depending on its concrete type you can put anything you need to send message ie: for emails: to, from, topic, for sms: sms text, phone number
更多推荐
发布评论