Pourquoi la méthode getInstance() dans le modèle de Fabrique d'être statique?
Dans la plupart des modèle de fabrique implémentations, le getInstance
méthode est généralement déclarées static. Le principal avantage du modèle de fabrique est de cacher les détails d'implémentation, mais pourquoi ne getInstance()
méthode doit être statique? Est l'instanciation d'un Objet Fabrique une mauvaise pratique?
XYZFactory factory = new XYZFactory();
XYZObj obj = factory.getInstance(TYPE);
Vs
XYZObj obj = XYZFactory.getInstance(TYPE);
OriginalL'auteur rkg | 2011-09-12
Vous devez vous connecter pour publier un commentaire.
Daves répondre est tout à fait correcte si la méthode est dans la classe elle-même. Pour une usine de méthode en classe, je pense que c'est une affaire de style. Je voudrais revenir à la question fondamentale: quand est-ce quelque chose de statique: cette méthode de fournir le comportement de l'ensemble de la classe, ou à des instances de la classe? Je soutiens l'usine méthodes offrent généralement au niveau de la classe de comportement.
Génial. a plus de sens maintenant!
OriginalL'auteur cobaltduck
Beaucoup de usine méthodes sont utilisés pour offrir une instance de la classe elle-même, sans la classe d'exportation des constructeurs (voir, par exemple,Josh Bloch point 1). Si la méthode de fabrique ont été une méthode d'instance, vous n'auriez pas un objet de la classe pour commencer.
En outre,
getInstance()
est généralement indépendante de toute instance existante, de sorte qu'il devrait être déclarée statique. Si elle dépend de l'une, un prototype (c'est à direclone()
) est souvent préféré.Enfin, vous devez faire la distinction entre la méthode de fabrique
public static getInstance()
et un résumé de l'usine, qui est une classe qui cache les détails de mise en œuvre souvent pour plusieurs interfaces. Vous devez, bien sûr, être en mesure d'instancier les classes de l'abrégé de l'usine. Vous pouvez trouver une excellente introduction à creational modèles (Résumé de l'Usine, Usine Méthode, Prototype, entre autres) dans le classique des Modèles de Conception de livre de la bande des Quatre. Il donne également un exemple de non-statique méthode de fabrique mélangés avec un prototype. Donc, vous voyez, de nombreuses variantes sont possibles...OriginalL'auteur DaveFar
Usine devrait vous donner les instances de produits, pas d'instances de lui-même. C'est un peu comme Singleton.
OriginalL'auteur Y.A.P.
Parce que vous utilisez une usine pour créer des objets. Ce que vous avez besoin est d'instances d'objet non pas des usines instances. Généralement, vous avez donc chercher le plus simple, le plus propre façon de faire.
Il n'est pas utile d'avoir plusieurs instances de l'usine autour de la pose. L'usine instances seront inutiles après la création de l'objet(s), alors pourquoi créer inutile objets de fabrique quand une longue durée de vie de l'instance va faire?
OriginalL'auteur