考虑一个类OriginalClass
,它可能会或可能不会在运行时提供。 OriginalClass
有一个方法doSomething
如果它的类可用,应该执行它。这种模式的名称是什么? (回答:远程代理)
解决此问题的一种方法是创建一个类,该类还具有使用反射调用OriginalClass.doSomething
的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) {}
}
}
}
此处应用的设计模式的名称是什么?我怀疑这是无论适配器,桥,门面或代理,但我不知道它。
答案在答案字段中,而不是问题标题字段中。吉兹。 – BoltClock
这是一种让标题更有用的方法。如果不是,就没有办法将这个问题与其他问题区分开来“这种模式的名称是什么?”的问题。吉兹。 ;) – hpique