Io sto contenendo "l'oggetto primario" (con la maggior parte delle funzionalità) all'interno di un "oggetto helper" che fornirà metodi di convenienza. Ho a disposizione solo un'interfaccia, a parte un oggetto restituito con quell'interfaccia da un metodo factory. Sto pensando che un buon modo per "estendere" questo oggetto sia la composizione, ma il problema per cui la mia superclasse deve implementare l'interfaccia dell'oggetto primario, che sarebbe circa 600 linee di codice stub.Qual è il modo più breve per delegare metodi non implementati a un oggetto contenuto in Java?
Chiaramente una soluzione semplice ma prolissa sarebbe quella di riempire tutti gli stub in modo da chiamare semplicemente i metodi dell'oggetto primario. C'è un modo migliore di questo in Java? In altre lingue che conosco, ci sarebbero modi per fare la delega automatica per i metodi che non sono implementati nell'oggetto helper.
Esempio:
class Helper implements Interface { Primary primary; Helper(Primary _primary) { primary = _primary; } void helper() { doStuff(); } // 500 lines of this void stub() { primary.stub(); } }
Nota:
piano originale era di utilizzare solo espressioni regolari per sostituire tutti i TODOs stub in Eclipse con le chiamate effettive. Cercherà uno strumento Eclipse che faccia questo automaticamente però. Inoltre, sembra che estendere l'interfaccia o utilizzare Proxy sia meglio alla fine, quindi lo perseguiremo.
Eclipse può farlo per voi. Tasto destro -> Origine -> Genera metodi delegati. –