Viele Builder PatternBeispiele machen das zu Buildereiner inneren Klasse des Objekts, das es erstellt.
Dies macht Sinn, da es anzeigt, was die BuilderBuilds sind. In einer statisch typisierten Sprache wissen wir jedoch, was die BuilderBuilds sind.
Auf der anderen Seite, wenn Builderes sich um eine innere Klasse handelt, sollten Sie wissen, welche Klasse die Klasse erstellt, Builderohne 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 Builderim selben Paket ist, aber keine innere Klasse, wie StringBuilder. Sie wissen, dass das ein bauen Builder sollte , Stringweil es so heißt.
Abgesehen davon ist der einzige gute Grund, warum ich mir vorstellen kann, Buildereine innere Klasse zu bilden, dass Sie wissen, was die Klasse Builderist, ohne ihren Namen zu kennen oder sich auf Namenskonventionen zu verlassen. Wenn zum Beispiel StringBuildereine innere Klasse von Stringmir 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 Buildereine innere Klasse macht, oder kommt es nur auf Vorlieben und Rituale an?