多种消息发送机制,处理合适不??

最近在项目中我负责一个消息发送模块的编写,现在回过头来看看自己写的,不知道使用的设计模式是否合适。

项目中:发送消息包括几种方式:email,短信,信息推送(信息推送有两种不同的实现,都需要去实现,一种是基于IBM的Mqtt进行消息推送,还有一种是C2DM)。该模块在系统主要是将信息用这几种方式发送信息。

我想,不管用那种方式发送信息,这是发送信息的不同策略而已,我通过判断是需要发送消息的类型来产生不同的实现类,调用实现类的统一接口发送信息。UML图如下:(画的不是很好。)

其中代码实现:

SendMessageContext:


public class SendMessageContext {

private SendMessageSuper sendMessageSuper;
public SendMessageContext(Message message) {
if("Mqtt" == message.getMessageType()) {
sendMessageSuper = new MqttPush();
} else if(
"Email" == message.getMessageType()) {
System.out.println(
"email");
} else if(
"SMS" == message.getMessageType()) {
System.out.println(
"SMS");
} else if(
"C2DM" == message.getMessageType()) {
System.out.println(
"C2DM");
} else {
//记录 日志 log
System.out.println();
}
}

public SendMessageSuper getSendMethod() {
return sendMessageSuper;
}
}

SendMessageSuper:


public interface SendMessageSuper {
public String sendMessage(Message message);
}

mqttpush:


public class MqttPush implements SendMessageSuper{

@Override
public String sendMessage(Message message) {

MQTTConnection mqttConnection = MQTTConnection.getMQTTConnection();
try {
mqttConnection.publishToTopic("1111","1223SS423423");
} catch (MqttException e) {
e.printStackTrace();
}
// TODO Auto-generated method stub
return null;
}
}

不知道 这样使用 是否符合,有什么不足。

先把每种消息封装成对象,配置在配置文件中,用工厂把把每种消息创建封装,用反射装入配置中具体消息类。

恩!知道了!同样也可以用spring的IOC来注入了!