Viele Builder Pattern
Beispiele machen das zu Builder
einer inneren Klasse des Objekts, das es erstellt.
Dies macht Sinn, da es anzeigt, was die Builder
Builds sind. In einer statisch typisierten Sprache wissen wir jedoch, was die Builder
Builds sind.
Auf der anderen Seite, wenn Builder
es sich um eine innere Klasse handelt, sollten Sie wissen, welche Klasse die Klasse erstellt, Builder
ohne in die Klasse zu schauen Builder
.
Wenn Sie den Builder als innere Klasse haben, wird auch die Anzahl der Importe verringert, da auf ihn von der äußeren Klasse verwiesen werden kann.
Und dann gibt es praktische Beispiele, bei denen das Builder
im selben Paket ist, aber keine innere Klasse, wie StringBuilder
. Sie wissen, dass das ein bauen Builder
sollte , String
weil es so heißt.
Abgesehen davon ist der einzige gute Grund, warum ich mir vorstellen kann, Builder
eine innere Klasse zu bilden, dass Sie wissen, was die Klasse Builder
ist, ohne ihren Namen zu kennen oder sich auf Namenskonventionen zu verlassen. Wenn zum Beispiel StringBuilder
eine innere Klasse von String
mir gewesen wäre, hätte ich wahrscheinlich gewusst, dass sie früher existiert als ich (spekulativ).
Gibt es noch andere Gründe, aus denen man Builder
eine innere Klasse macht, oder kommt es nur auf Vorlieben und Rituale an?
quelle
In diesem Fall gibt es kein "sollte". Das Definieren eines Builders in einer anderen Klasse oder das Separieren eines Builders ist orthogonal zum Builder-Muster. Viele Beispiele tun dies, um den Code in einer konsistenten Datei darzustellen (auch für den Zugriff auf private Mitglieder, dies hängt jedoch auch vom Kontext ab). Fühlen Sie sich frei, etwas anderes zu tun
quelle