多種訊息傳送機制,處理合適不??

psw1254發表於2011-03-29
最近在專案中我負責一個訊息傳送模組的編寫,現在回過頭來看看自己寫的,不知道使用的設計模式是否合適。

專案中:傳送訊息包括幾種方式: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;
	}
}
<p class="indent">


SendMessageSuper:

public interface SendMessageSuper {
	public String sendMessage(Message message);
}
<p class="indent">


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;
	}
}
<p class="indent">


不知道 這樣使用 是否符合,有什麼不足。

相關文章