De nombreux Builder Pattern
exemples font de la Builder
classe interne de l'objet qu'il construit.
Cela a un certain sens car il indique ce que les Builder
builds. Cependant, dans un langage typé statiquement, nous savons ce que les Builder
builds.
D'autre part , si la Builder
est une classe interne, vous devez savoir quelle classe les Builder
builds sans regarder de l'intérieur Builder
.
En outre, avoir le générateur comme classe interne réduit le nombre d'importations car il peut être référencé par la classe externe - si cela vous intéresse.
Et puis il y a des exemples pratiques où le Builder
est dans le même paquet, mais pas une classe interne, comme StringBuilder
. Vous savez que le Builder
devrait construire un String
car il est nommé ainsi.
Cela étant dit, la seule bonne raison à laquelle je peux penser pour créer une Builder
classe intérieure est que vous savez ce qu'est la classe Builder
sans connaître son nom ou en vous appuyant sur les conventions de dénomination. Par exemple, si StringBuilder
c'était une classe interne de, String
j'aurais probablement su qu'elle existait plus tôt que moi (spéculative).
Y a-t-il d'autres raisons de faire de la Builder
classe intérieure une ou cela revient-il simplement à la préférence et au rituel?
la source
Il n'y a pas de «devrait» dans ce cas. Définir un générateur dans une autre classe ou le séparer est orthogonal au modèle de générateur. De nombreux exemples le font en raison de la commodité de présenter le code dans un fichier cohérent (également pour accéder aux membres privés, mais cela dépend également du contexte). N'hésitez pas à faire autrement
la source