考慮一個類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