Molti esempi di Builder Pattern
rendono Builder
una classe interna dell'oggetto che costruisce.
Questo ha senso dal momento che indica cosa costruisce Builder
. Tuttavia, in un linguaggio tipizzato staticamente sappiamo quali build Builder
.
D'altra parte se Builder
è una classe interna, tu dovresti sapere quale classe la 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 ci tieni.
E poi ci sono esempi pratici in cui Builder
è nello stesso pacchetto, ma non una classe interna, come StringBuilder
. Sai che Builder
dovrebbe creare un String
perché è stato chiamato così.
Detto questo, l'unica buona ragione per cui posso pensare di fare una Builder
di una classe interna è che tu sai quale sia la classe ' Builder
senza conoscere il suo nome o fare affidamento sulle convenzioni di denominazione. Ad esempio, se StringBuilder
era una classe interna di String
probabilmente avrei saputo che esisteva prima di quanto facevo io (speculativo).
Ci sono altri motivi per rendere la Builder
una classe interiore o si riduce a preferenze e rituali?