Sto creando un'API di wrapper / layer multipli in Java che vanno come questo
-
public class Layer1<T extends Layer1>
-
public class Layer2<T extends Layer2> extends Layer1<Layer2>
-
public class Layer3 extends Layer2<Layer3>
con metodi come public T sees(){ return (T) this;}
all'interno di ogni livello
Qual è il modo corretto per la struttura sopra di lavorare per essere in grado di mantenere l'oggetto originale, iniziamo la catena con, digitare durante la chiamata.
Aka il seguente per essere fattibile: 3rdLayerObject.1stLayerMethod().2ndLayerMethod();
dove la chiamata al metodo 1stLayer restituisce un oggetto di primo livello (anziché la terza sottoclasse) e quindi chiamando un metodo di secondo livello restituisce un errore.
Perché l'API è strutturata in questo modo:
Primo livello ha solo i metodi che si applicano a tutte le situazioni
2nd layer ha metodi client specifici che sovrascrivono le implementazioni di base del 1st wrapper o sono completamente nuovi
Terzo livello ha metodi specifici del progetto che sono principalmente nuovi metodi usati solo da questo progetto.
Naturalmente, se pensi che la struttura di cui sopra sia difettosa e che ci sia un altro modello / struttura da utilizzare per organizzarlo in modo più efficace, sono aperto a tutte le idee.