我有一個使用command design pattern的對象集合,即它們實現了一個抽象Command
類,並且有一個方法。使用命令設計模式將命令行參數轉換爲對象
調用時(例如)在命令行中,你可以做這樣的事情,但其嚴重笨重,你將如何實現這一點:
public void main(String[] arg) {
Command c = null;
if(arg[0].equals("FirstCommand") {
c = new FirstCommand(arg[1]);
}
if(arg[0].equals("SecondCommand") {
c = new SecondCommand(arg[1], arg[2]);
}
if(arg[0].equals("ThirdCommand") {
c = new ThirdCommand(arg[1], Long.parseLong(arg[2]));
}
//.....etc....
c.execute();
}
顯然可用命令的列表的增長,這變得相當繁瑣的代碼
這是我的理解,它不可能做到這一點沒有一些複雜的類路徑加載hackery? – Jacob 2012-04-12 12:30:04
你認爲classpath hackery是什麼意思?我的答案假定指定爲參數的類可用於正在運行的類的類加載器。 Marko TopoInik發佈了我懶得寫出答案的代碼 – bennidi 2012-04-27 20:42:28