【发布时间】:2015-11-25 13:46:09
【问题描述】:
我有一个名为 Command 的接口:
public interface Command {
// irrelevant code
}
大约有 15 个类实现了这个接口:
public class Comm_A implements Command {
// irrelevant code
}
public class Comm_B implements Command {...}
....
public class Comm_XZ implements Command {...}
而工厂应该接受一个字符串并返回相应命令的一个实例:
public class CommandFactory {
public static Command getCommand(String s) {
if (s.equals("Comm_A")) return new Comm_A();
else ... // each particular case
}
}
考虑我希望能够在不更改工厂代码的情况下添加新命令。
我可以让它自动尝试创建相应的实例,而无需对每个“Comm_A”...“Comm_XZ”案例进行硬编码并且不使用 java.lang.reflect 吗?
【问题讨论】:
-
你能用类而不是字符串来调用“getCommand()”吗?
-
不,字符串是从 JTextPane 中读取并手动输入的。
-
为什么不想使用反射?虽然我同意在您不需要它时远离它通常是明智的(并避免“聪明”的技巧),但这个用例非常适合它。
标签: java class interface factory hardcode