我想了解用於處理一系列消息的最適合的(Java)設計模式。每條消息都包含一個「類型」,用於確定應如何處理消息中包含的數據。處理事件的設計模式
我一直在考慮命令模式,但正在努力理解特定命令類的角色/相關性。到目前爲止,我已經確定接收器將包含實現消息處理方法的代碼。具體命令將根據消息類型進行實例化。但是,我不知道應該如何傳遞實際的消息數據。是否應該通過具體的命令execute方法調用適當的接收方法傳遞給接收方構造函數?也許消息數據應該在接收者操作方法調用中傳遞?
我對這一切都是相當新的,所以任何指導將不勝感激。
這可能會幫助:
public interface Command {
public void execute(String msg);
}
public class AO1Command implements Command {
Receiver rec = new Receiver();
public void execute(String msg) {
rec.admit(msg);
}
}
public class CommandFactory {
public protected CommandFactory() { }
public static Command getInstance(String type) {
if (type.equals("A01")) return new A01Command();
else if (type.equals("A02")) return new A02Command();
else {
return null;
}
}
只是一個小方面的說明。切勿使用運算符進行相等(==)來比較字符串。取決於jvm實現「hello」==「hello」可能評估爲false。這是因爲==運算符使用對象標識,這意味着只有當兩個對象相同時它才爲真。 「hello」==「hello」實際上可能會構造兩個字符串對象 - >不完全相同。用equals()方法代替 – bennidi
@bennidi:謝謝你。我編輯了這個例子 - 並檢查了原始代碼:) – skyman