Zu benutzende Klasse bei der Erzeugung eines Interface-Typs definieren / ermitteln ...



  • Also mein Problem ist folgendes:
    Ich habe eine Infoklasse für Dateien geschrieben (getIcon(), getExtension(), etc.). Die Basisfunktionen habe ich in einem Interface deklariert, allerdings soll sie dynamisch erweiterbar sein, soll heißen:
    Bei der erstellung einer solchen Infoklasse (per factory) sollen mindestens die Interface-Anforderungen erfüllt sein - die Funktionen sind in der factory fest implementiert - aber ich weiß nicht wie ich am elegantesten eine erweiterte Klasse übergeben kann, welche
    a) die Funktionen für das setzen anderer information bereitstellt
    b) weiß welche erweiterte klasse erstell werden soll
    BSP:

    //basisinformationen
    Interface inter = Factory().create() - > new DefaultKlasse();
    /*
    * basisinformationen+extra:
    * ausgelesen wird mit einer Schleife je nach länge einer überschriebenen konstanten
    */
    Interface inter = Factory().create(ExtendedKlasse) -> ExtendedDefaultKlasse();

    Tippe ich mit reflection richtig, oder gibt es eine Elegante Lösung für so etwas???

    MFG John



  • Ich hoffe ich habe alles richtig verstanden.

    Du verlangst von einer Factory eine ganz bestimmte implementierung des Interfaces??? Das ist glaub ich nicht der Sinn einer Factory.

    Die Benutzerklasse der Factory bzw. des Interfaces sollte mit dem Interface arbeiten und nicht mit dessen implementierung.

    Für deinen Fall würde ich ein zweites Interface schreiben welches das erste (Basis) erweitert und eine zweite create() - Methode in der Factory für dieses Interface.

    ms



  • Mein Prof meinte, ich soll mir mal Class anschauen und die entsprechende (implementierende Klasse) im Konstruktor der Factory übergeben.

    Danke trotzdem

    MFG John

    EDIT: Habe mich wahrscheinlich auch ziemlich besch***en ausgedrückt 😃


Anmelden zum Antworten