【发布时间】:2011-09-18 22:59:48
【问题描述】:
考虑一个类OriginalClass,它可能在运行时可用,也可能不可用。 OriginalClass 有一个方法 doSomething,如果它的类可用,则应该执行该方法。
解决这个问题的一种方法是创建一个类,该类也有一个doSomething 方法,该方法使用反射调用OriginalClass.doSomething。像这样的:
public class CompatibilityClass {
private static Method originalClass_doSomething = null;
static {
initCompatibility();
};
private static void initCompatibility() {
try {
originalClass_doSomething = Class.forName("originalClass").getMethod("doSomething", new Class[] {});
} catch (NoSuchMethodException nsme) {
} catch (SecurityException se) {
} catch (ClassNotFoundException cnfe) {}
}
public static void doSomething() {
if (originalClass_doSomething != null) {
try {
originalClass_doSomething.invoke(null, new Object[]{});
} catch (Exception e) {}
}
}
}
这里应用的设计模式的名称是什么?我怀疑是 Adapter、Bridge、Facade 或 Proxy,但我不确定是哪个。 p>
【问题讨论】:
-
答案出现在答案字段中,而不是问题标题字段中。天哪。
-
这是一种让标题更有用的方法。如果不是,则无法将此问题与其他“此模式的名称是什么?”区分开来。问题。哎呀。 ;)
标签: java design-patterns reflection proxy-pattern