Molti Builder Pattern
esempi rendono la Builder
classe interna dell'oggetto che costruisce.
Questo ha un senso dal momento che indica quali sono le Builder
build. Tuttavia, in un linguaggio tipicamente statico sappiamo quali sono le Builder
build.
D'altra parte se si Builder
tratta di una classe interna, dovresti sapere quale classe Builder
costruisce senza guardare all'interno di Builder
.
Inoltre, avere il builder come classe interna riduce il numero di importazioni poiché può essere referenziato dalla classe esterna - se ti interessa.
E poi ci sono esempi pratici in cui il Builder
è nello stesso pacchetto, ma non una classe interna, come StringBuilder
. Sai che Builder
dovrebbe creare un String
perché è così chiamato.
Detto questo, l'unica buona ragione che mi viene in mente per creare una Builder
classe interiore è che sai qual è la classe Builder
senza conoscerne il nome o fare affidamento su convenzioni di denominazione. Ad esempio, se StringBuilder
fosse stata una classe interiore String
probabilmente avrei saputo che esisteva prima di me (speculativo).
Ci sono altri motivi per creare Builder
una classe interiore o dipende solo dalle preferenze e dal rituale?