java多态替换switch_使多态性无法解决那些switch / case语句的麻烦
繼續前面的問題,我實現了基本的命令模式,創建了命令類并編碼到接口,因此在使用任何命令時都可以調用該execute()方法。
但是,我仍然發現自己無法動搖這些案例陳述:我正在從主/決策字符串(由隨機,重復的字符A,B,C或D組成)中讀取每個字符,然后檢索相關的實現地圖上的命令,然后調用其execute方法。
我的設計是這樣的:
public interface Command {
void execute();
}
public class CommandA implements Command{
//implements execute() method
}
private Map myMap= new HashMap();
myMap.put("A", new CommandA);
myMap.put("B", new CommandB);
myMap.put("C", new CommandC);
myMap.put("D", new CommandD);
但是,當我閱讀每條指令時,我又不得不求助于case語句:
switch(instructionFromString){
case 'A':{myMap.get("A").execute(); break;}
case 'B':{myMap.get("B").execute(); break;}
case 'C':{myMap.get("C").execute(); break;}
case 'D':{myMap.get("D").execute(); break;}
顯然,在此過程中,我設法克服了針對案例陳述的多態性優勢。
可能是我選擇用來存儲命令的數據結構嗎?僅從中提取這些命令就可以成為永久數據結構。
我想到的另一件事是我在地圖中使用的鍵/值命名。我試圖在概念上將每個存儲的命令鏈接到其相關指令的方式?即,命令“ A”的實現通過鍵“
A”存儲在地圖上,以便它可以與相應的指令“ A”匹配?在我看來,這似乎不太可能。
對于我下一步將一勞永逸地刪除這些案例陳述的任何提示或進一步建議,將不勝感激。提前謝謝了
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的java多态替换switch_使多态性无法解决那些switch / case语句的麻烦的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java线程占用CPU_在windows
- 下一篇: java httpclient 进度条_