Muitos Builder Pattern
exemplos compõem a Builder
classe interna do objeto que ele constrói.
Isso faz algum sentido, pois indica o que as Builder
compilações. No entanto, em uma linguagem de tipo estaticamente, sabemos o que é Builder
construído.
Por outro lado, se Builder
for uma classe interna, você deve saber qual classe a Builder
compilação sem olhar para dentro da Builder
.
Além disso, ter o construtor como uma classe interna reduz o número de importações, pois ele pode ser referenciado pela classe externa - se você se importa com isso.
E há exemplos práticos em que o Builder
está no mesmo pacote, mas não em uma classe interna, como StringBuilder
. Você sabe que o Builder
deve criar um String
porque é assim chamado.
Dito isto, a única boa razão para pensar em fazer uma Builder
classe interna é que você sabe o que é a classe Builder
sem saber seu nome ou depender de convenções de nomenclatura. Por exemplo, se StringBuilder
fosse uma classe interna de String
eu provavelmente saberia que existia mais cedo do que existia (especulativo).
Existem outras razões para fazer da Builder
classe uma parte interna ou se resume apenas à preferência e ao ritual?
fonte
Não há "deveria" neste caso. Definir um construtor dentro de outra classe ou separá-lo é ortogonal ao padrão Construtor. Muitos exemplos fazem isso devido à conveniência de apresentar o código em um arquivo consistente (também para acessar membros particulares, mas isso também depende do contexto). Sinta-se livre para fazer o contrário
fonte