si, infatti quello che sto facendo è, dopo un refactoring delle classi, avere qualcosa del tipo:

AbstractClassePadre {
public metodo(){
valore = repositoryConfig.readActualPropertyFromDB(...);
if (valore instanceof A) {
A a = getApplContext.getBean("policy_1");
a.metodo();
} else if (valore instanceof B) {
B b = getApplContext.getBean("policy_2");
b.metodo();
}
}

class A extends AbstractClassePadre {
@override
metodo(){...};
}

class B extends AbstractClassePadre {
@override
metodo(){...};
}


come la vedi?