Wie soll ich auswählen, welche konkrete Implementierung basierend auf der Benutzerauswahl instanziiert werden soll?

Ich habe eine SchnittstelleFruit mit zwei ImplementierungenApple undBanana. Ich möchte ein @ erstellFruit Instanz. Die Wahl, ob die konkrete Umsetzung ein @ sein soApple oder einBanana sollte vom Benutzer gemacht werden. Ich habe die Benutzeroberfläche noch nicht entworfen, daher gibt es keine Einschränkung, wie diese Auswahl vom Benutzer getroffen wird.

Ich weiß, dass es folgende Optionen gibt:

erwendung des abstrakten Fabrikmuste Verwendung der Reflektion zum Erstellen einer Instanz aus einem bestimmten Klassennamen Verwendung der Reflektion zum Erstellen einer Instanz aus einem bestimmten Klassenobjekt

Was sind die Vor- und Nachteile dieser Optionen?

Bitte beachten Sie, dass es zwar mehrere ähnliche Fragen gibt, die den einen oder anderen Ansatz behandeln, ich jedoch keinen einzigen Vergleich gefunden habe.

Hier ist eine Liste verwandter Fragen:

Warum ist Class.newInstance () "böse"?Kann ich Class.newInstance () mit Konstruktorargumenten verwenden?Wie erstelle ich eine ArrayList von Klassen? Folgt Class.newInstance () dem Entwurfsmuster "Abstract factory"?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage