Konstruktorüberladung in Java - Best Practice
Gibt es ein paar Themen, die ähnlich dieser, aber ich konnte nicht finden, eine ausreichende Antwort.
Ich würde gerne wissen, was die beste Praxis für Konstruktor überladen in Java. Ich habe bereits meine eigenen Gedanken zu dem Thema, aber ich würde gerne hören, mehr Beratung.
Ich beziehe mich auf beide Konstruktor überladen in eine einfache Klasse und der Konstruktor überladen, während die Erben eine bereits überlastet Klasse (also die Basisklasse überladen von Konstruktoren).
Dank 🙂
InformationsquelleAutor der Frage Eyal Roth | 2009-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwar gibt es keine "offiziellen Leitlinien" Folge ich dem Prinzip der KISS und TROCKEN. Machen die überladenen Konstruktoren so einfach wie möglich, und der einfachste Weg ist, dass Sie nur aufrufen, diese(...). So brauchen Sie nur zu prüfen und zu verarbeiten, die Parameter nur einmal.
Vom unit-Test-Sicht, es werden einfach zu testen das Klasse, da kannst du in der Ressourcen in Sie. Wenn die Klasse hat viele Ressourcen (oder Mitarbeiter, als einige OO-Freaks nennen), sollten Sie eines dieser beiden Dinge:
Eine parameter-Klasse
Den Konstruktor Einfach nur entweder zu teilen braucht die
SimpleParams
parameter:...oder machen
SimpleParams
ein Attribut:Eine factory-Klasse
Machen eine factory-Klasse, initialisiert die Ressourcen für Sie, das ist günstig, wenn die Initialisierung der Ressourcen ist ein bisschen schwierig:
Dem Konstruktor erfolgt dann in der gleichen Weise wie bei der parameter-Klasse:
Eine Kombination von beiden
Yeah... Sie können mix and match, beide Möglichkeiten, je nachdem, was einfacher für Sie an der Zeit. Parameter-Klassen und einfache factory-Klassen sind ziemlich viel die gleiche Sache in Anbetracht der
Simple
Klasse, dass Sie auf die gleiche Art verwendet.InformationsquelleAutor der Antwort Spoike
Ich denke, dass die beste Vorgehensweise ist, um einzigen primären Konstruktorzu denen der überladene Konstruktoren finden Sie durch den Aufruf
this()
mit dem entsprechenden parameter ist der Standardwert. Der Grund dafür ist, dass es macht es viel übersichtlicher, was den konstruierten des Objekts ist - eigentlich kann man sich den primären Konstruktor als nur echte Konstruktordie anderen nur delegieren, um esEin Beispiel HIERFÜR könnte
JTable
- der primäre Konstruktor nimmt einenTableModel
(plus Spalte und Auswahl der Modelle), und die anderen Konstruktoren rufen diese primären Konstruktor.Unterklassen wo die Superklasse hat bereits überladenen Konstruktorenich würde eher davon ausgehen, dass es zumutbar ist, behandeln alle von der übergeordneten Klasse Konstruktoren als primäre und denke, es ist völlig legitim, nicht auf eine einzige primäre Konstruktor. Zum Beispiel,wenn sich
Exception
ich oft 3 Konstruktoren, die einen nehmen nur einenString
Nachricht, eine Einnahme einThrowable
Ursache und die andere, die sowohl. Jeder dieser Konstruktoren-Aufrufesuper
direkt.InformationsquelleAutor der Antwort oxbow_lakes
Wenn Sie haben eine sehr komplexe Klasse mit vielen Optionen, von denen nur einige Kombinationen gültig sind, sollten Sie erwägen, ein generator. Funktioniert sehr gut sowohl codewise aber auch logisch.
Den generator ist eine geschachtelte Klasse mit Methoden, die nur entworfen, um Felder zu setzen, und dann die ComplexClass Konstruktor nimmt nur so ein generator als ein argument.
Edit: Die ComplexClass Konstruktor sicherstellen können, dass der Staat in der Builder gültig ist. Das ist sehr schwer zu tun, wenn Sie gerade verwenden-setter auf ComplexClass.
InformationsquelleAutor der Antwort Thorbjørn Ravn Andersen
Es hängt wirklich von der Art von Klassen, da nicht alle Klassen sind gleich.
Als Allgemeine Richtlinie würde ich vorschlagen, 2 Optionen:
InformationsquelleAutor der Antwort Gregory Mostizky
Gut, hier ist ein Beispiel für überladene Konstruktoren.
Im obigen Beispiel können Sie sehen, überladene Konstruktoren. Namen der Konstruktoren ist die gleiche, aber jeder hat verschiedene Konstruktoren Parameter.
Hier sind einige Ressourcen, die werfen mehr Licht auf der Konstruktor überladen in java,
Konstruktoren.
Konstruktor Erklärung.
InformationsquelleAutor der Antwort Shiva