Рассмотрим класс 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) {}
}
}
}
Как называется применяемый здесь шаблон дизайна? Я подозреваю, что это либо Адаптер , Мост , Фасад или Прокси , но я не уверен, какой именно.