Ho il seguente schema, che vorrei implementare usando un qualche tipo di programmazione generica, ma non vedo come posso farlo.
Ho un'interfaccia che contiene molti metodi con diverse firme. Ogni metodo ha un tipo restituito di un tipo di classe e qualsiasi implementazione deve restituire null in caso di errore o un oggetto concreto in caso di successo.
Ora ho un'implementazione concreta A di I e una decorator classe D di A. Per ogni metodo
T m(T1 p1, ..., Tn pn)
definito dall'interfaccia I, l'implementazione di m in D segue uno schema fisso:
class D
{
private A impl = ...;
...
T D.m(t1 p1, t2 p2, ..., tn pn)
{
init();
T result = impl.m(p1, ..., pn);
if (result != null)
successCode();
else
failureCode();
return result;
}
}
Il codice chiamante utilizza il decoratore come segue:
I instance = DecoratorFactory.createIDecorator();
T r = instance.m(p1, ..., pn);
Domanda: C'è un modo per implementare questo tipo di decoratore in un generico modo (senza scrivere la stessa piastra per ogni metodo)? Questo può essere fatto in Java?
Se non è possibile implementare questo modello in Java, è lì un modo elegante per implementarlo in un'altra lingua?