【发布时间】:2014-03-16 07:44:35
【问题描述】:
我的问题是 Java 中的一般设计问题。在典型的基于控制器的设计(比如 MVC)中,控制器通常创建动作实例并调用从接口实现的方法(比如 Action 接口的 execute())。
为什么我们需要创建不必要的对象,为什么不使用静态调用并消除实现接口的需要?
就像下面的例子。就像每个 Java 程序都应该有一个 main() 方法一样,每个动作方法都应该有一个 execute()
class MyActionClass {
public static void execute() {
System.out.println("Hello from execute()!!");
}
}
public class StaticTest {
/**
* @param args
* @throws ClassNotFoundException
* @throws SecurityException
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public static void main(String[] args) throws ClassNotFoundException,
NoSuchMethodException, SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
Class<?> clazz = Class.forName("MyActionClass");
Method method = clazz.getMethod("execute");
method.invoke(null);
}
}
【问题讨论】:
-
反射也实例化了对象。
-
Radiodef 确实如此,我想我在自我审议后找到了这个问题的答案。可能这就是我们在 Spring 框架中使用“单例”的原因。
标签: java model-view-controller interface static-methods