J'ai travaillé sur une API publique récemment, et j'ai été à l'agonie sur le choix de la statique de l'usine de méthodes contraceptives constructeur. Statique méthodes de fabrique certainement faire sens dans certains cas, mais dans d'autres, il n'est pas clair et je ne suis pas certain que la cohérence avec le reste de l'API est une raison suffisante pour inclure plus de constructeurs.
De toute façon, je suis tombé sur une citation de Bill Venners interview avec Josh Bloch que j'ai trouvé utile:
Lorsque vous écrivez une classe, vous pouvez
exécutez le mon livre la liste de la
avantages de la statique des usines de plus de
les constructeurs publics. Si vous trouvez que
un nombre important de ces
avantages s'appliquent effectivement dans votre
cas, alors vous devriez aller avec les
statique des usines. Sinon, vous devriez
aller avec les constructeurs.
Certains ont été déçus de trouver
que des conseils dans mon livre. Ils l'ont lu
et dit, "Vous avez soutenu fortement
pour le public static usines que nous
faut juste les utiliser par défaut." J'
pense que le seul vrai inconvénient dans
ce faisant, c'est que c'est un peu
déconcertant pour les personnes qui sont utilisés
à l'aide de constructeurs pour créer leur
objets. Et je suppose qu'il fournit un
un peu moins d'un repère visuel dans le
programme. (Vous ne voyez pas le nouveau
mot-clé.) C'est également un peu plus
difficile de trouver de la statique des usines en
la documentation, parce que Javadoc
des groupes de tous les constructeurs ensemble.
Mais je dirais que tout le monde devrait
envisager statique des usines de tous les
temps, et de les utiliser quand ils sont
approprié.
Après avoir lu cette citation, et l'étude d'Uri mentionnés*, je me sens enclin à pencher en faveur des constructeurs, sauf s'il existe des raisons impérieuses de le faire autrement. Je pense statique méthode de fabrique, sans bonne raison est probablement juste une complexité inutile et plus-ingénierie. Bien que je pourrais bien changer d'avis et de nouveau d'ici demain...
*Malheureusement, cette étude se focalise moins sur la statique de l'usine de méthodes et de plus en plus sur le modèle de fabrique (où une usine distincte de l'objet existe pour créer de nouvelles instances), donc je ne suis pas sûr que l'on peut vraiment en tirer la conclusion que statique usine méthodes de confondre de nombreux programmeurs. Bien que l'étude ne me donnent l'impression que, souvent, ils le feraient.