Hallo,
die Frage in kurz: Wie gehe ich mit leeren vererbten Interface-Methoden um? Sollte ich lieber eine abstrakte Klasse nutzen?
die Frage mit Kontext:
Ich programmiere aktuell einen HTTP-Server. Jede mögliche URL (z.B. /home oder /login) hat ihren eigenen ContextHandler (z.B. HomeContextHandler oder LoginContextHandler). Alle ContextHandler haben eine Gemeinsamkeit: z.B. das Senden einer Antwort. Aus diesem Grund gibt es eine Elternklasse. Diese heißt ganz kreativ: ContextHandler. Diese Klasse erkennt auch, welche HTTP-Methode aufgerufen wurde und startet die jeweilige Methode (onPost(), onGet(), onTrace(), onHead() usw.). Diese Methoden sind, für die Übersichtlichkeit, in einem Interface (HttpMethodsHandler) definiert. Die ContextHandler Klasse implementiert dieses Interface und die Erben des ContextHandlers müssen die jeweiligen Methoden implementieren.
Jetzt das Problem: nicht alle ContextHandlers Erben brauchen alle Methoden von HttpMethodsHandler, da manche HTTP-Methoden nicht unterstützt werden.
Z.B. braucht /home keine Post-Methode.
Da aber alle Interface-Methoden implementiert werden müssen, taumeln die mit einem lehren Body in meinen ContextHandlers rum. Das stört mich zwar nicht, aber gibt es eine bessere Lösung?
Ich wünsche Euch noch einen schönen Abend.
die Frage in kurz: Wie gehe ich mit leeren vererbten Interface-Methoden um? Sollte ich lieber eine abstrakte Klasse nutzen?
die Frage mit Kontext:
Ich programmiere aktuell einen HTTP-Server. Jede mögliche URL (z.B. /home oder /login) hat ihren eigenen ContextHandler (z.B. HomeContextHandler oder LoginContextHandler). Alle ContextHandler haben eine Gemeinsamkeit: z.B. das Senden einer Antwort. Aus diesem Grund gibt es eine Elternklasse. Diese heißt ganz kreativ: ContextHandler. Diese Klasse erkennt auch, welche HTTP-Methode aufgerufen wurde und startet die jeweilige Methode (onPost(), onGet(), onTrace(), onHead() usw.). Diese Methoden sind, für die Übersichtlichkeit, in einem Interface (HttpMethodsHandler) definiert. Die ContextHandler Klasse implementiert dieses Interface und die Erben des ContextHandlers müssen die jeweiligen Methoden implementieren.
Jetzt das Problem: nicht alle ContextHandlers Erben brauchen alle Methoden von HttpMethodsHandler, da manche HTTP-Methoden nicht unterstützt werden.
Z.B. braucht /home keine Post-Methode.
Da aber alle Interface-Methoden implementiert werden müssen, taumeln die mit einem lehren Body in meinen ContextHandlers rum. Das stört mich zwar nicht, aber gibt es eine bessere Lösung?
Ich wünsche Euch noch einen schönen Abend.