Wie folgendes sauber designen



  • Passt das nicht zum Composite?

    Was macht dein open?

    Wenn ich einen Ordner habe möchte ich auch an die darin enthaltenen Dateien und Unterordner kommen. Wenn ich aber in der Basis soetwas habe wie getFilesystemObjects (), dann muss ich diese Methode auch in der File-Klasse implementieren. Eine Datei nach ihren Unterverzeichnissen zu fragen ist aber aus meiner sich ein Fehler. Würde ich das ganze aber entsprechend implementieren, dass File::getFilesystemObjects () mit einem Fehler reagiert, würde das die Arbeit extrem erschweren. Also muss ich File::getFilesystemObjects () so bauen, dass null oder eine leere Collection oder ähnliches zurückgegeben wird.
    Aber ich habe eben generell eine Ablehnung gegen Methoden, die keine sinvolle Aktion durchführen, sondern notgedrungen irgendwie implementiert werden müssen, um das Interface der Basisklasse zu befriedigen. Wenn möglich ist, dass es einige Derivate geben wird, die eine Fähigkeit nicht besitzen sollte die Basis diese Fähigkeit nicht anbieten. Dateien haben nicht die Fähigkeit ihre Unterordner zu liefern.

    Das ist mein Standpunkt.

    Optimizers Variante macht das ganze sauber ohne irgendwelche sinnlos-Methoden oder andere merkwürdige Dinge.

    Ich habe also bereits die Lösung. Trotzdem danke.


Anmelden zum Antworten