我有一个使用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