Sollte ich den Dateidialog als Singleton implementieren?

8

Ich entwickle eine swing-basierte Anwendung, wo ich viele FileDialogs verwende? Also sage ich, warum nicht alle diese Instanzen nur ein FileDialog-Objekt erstellen und im gesamten Projekt verwenden? Ist das eine gute Annahme? hat das irgendwelche Leistungsverbesserungen?

Danke

    
Feras Odeh 18.10.2010, 14:20
quelle

4 Antworten

8

Dies ist ein großartiges Beispiel für einen Anwendungsfall, bei dem die Anwendungsleistung keine Rolle spielt und die Frage tatsächlich in die vorzeitige Optimierungsklasse der Problemlösung fällt. Warum? Die Verwendung von FileDialog bedeutet, dass Sie mit dem Benutzer interagieren, der, selbst wenn er über das Tastaturkürzel Kung Fu hinaus geschickt ist, viele Größenordnungen langsamer als die Anwendung sein wird. Wie viele FileDialogs kann ein schneller Benutzer in einer Minute öffnen, verwenden und schließen? Sag ein Dutzend. Sie sollten sich nicht um ein Dutzend Objekte kümmern, die in einer Minute kommen und gehen. Sollte nicht einmal auf Ihrem Radar erscheinen. Benütze deine Energien woanders. In der Tat sollten Sie jedes Mal ein neues Objekt erstellen und jegliche Cache-Probleme vermeiden.

    
Paul Sasik 18.10.2010, 14:38
quelle
3

Ich würde eine statische FileDialog-Klasse erstellen, die jedes Mal eine neue Instanz des FileDialogs generiert, wenn eine neue Datei geöffnet werden muss, anstatt eine Singleton-Instanz über die Anwendung hinweg zu teilen.

Damit ersparen Sie sich den Kopf, wenn Sie herausfinden wollen, ob Sie den richtigen Pfad aus dem Dialogfeld lesen oder ob jemand den Dialog geöffnet und einen neuen Pfad ausgewählt hat und Sie nun auf diesen neuen Pfad verweisen der ursprünglich ausgewählte Pfad usw. ...

    
Justin Niessner 18.10.2010 14:21
quelle
1

Warum implementieren Sie als Singleton? Können Sie tatsächlich überprüfen, dass das Anzeigen von zwei Dateidialogen nie stattfinden wird?

Besser, es als eine normale Klasse zu haben; Sie möchten keine Einschränkungen einbauen, die später zu Schwachpunkten werden könnten.

Es ist nicht so, dass Ihre Anwendung durch Millionen von Aufrufen in den Dateidialog kritisch überlastet wird, und wer weiß, vielleicht wird es eines Tages die richtige Lösung sein, um zwei Dateidialoge zu haben. Selbst wenn Sie sie nicht beide gleichzeitig anzeigen, wäre es vielleicht ein Segen in einem Dateiübertragungsprogramm, wenn Sie den Verlauf in einem "Quellen" -Dialog speichern und einen separaten Verlauf im "Ziel" -Dialog haben.

    
Edwin Buck 18.10.2010 15:31
quelle
0

Vergessen Sie Leistung / Schnelligkeit. Es spielt hier keine Rolle. Semantik ist wichtig. Durch die Wiederverwendung des gleichen Dateidialogs erhalten Sie möglicherweise Dinge kostenlos. Startet der Dialog jedes Mal im selben Verzeichnis? Es wird, wenn es die gleiche Instanz ist. Wenn Sie neue Dialoge erstellen, müssen Sie das Startup-Verzeichnis selbst festlegen.

Warum ist es auch nicht möglich, mehr als eine Instanz zu erstellen? Machen Sie einfach ein Instanzmitglied in Ihrem Rahmen und machen Sie damit fertig.

    
Esben Skov Pedersen 19.10.2010 07:58
quelle