如何更改以下接口以接受不同类型的消息传递系统的参数。(How can i change following interface to accept parameters for different types of messaging system. any design pattern ?) public interface IsendMessage { public void send(messageContext context); }

以上界面用于发送消息。 它可以是电子邮件,短信,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

更多推荐