43 votes

Méthode Factory, Abstract Factory et Factory

Je suis vraiment confus au sujet de ces trois termes.

Ma compréhension est que:

  • dans le modèle de Fabrique, il n'y a pas d'usine de production de béton. L'usine génère les nouveaux objets selon les paramètres.

  • en Résumé modèle de Fabrique, il y a plusieurs usines de béton. Le client doit créer différentes usines de béton explicitement.

Est ce que le droit?

Quelles sont les autres différences?

En outre, quelle est la Méthode de Fabrique de modèle? Est-il même que le modèle de Fabrique?

39voto

Richard JP Le Guen Points 13306

La " bande Des Quatre "Modèles de Conception, d'Éléments Réutilisables Logiciel Orienté Objet" livre contient deux entrées, "Abstract Factory" (aka "Virtuel Constructeur") et "Méthode de Fabrique"... je ne sais pas à propos de "Usine de Béton." J'ai entendu le terme, mais jamais trop pensé.

Méthode De Fabrique

Dans "l'Usine" Méthode d'un objet a une méthode qui est responsable de l'instanciation d'un autre objet. Un bon exemple serait le JavaScript objet de document et la création d' HtmlElement objets:

var newDiv = document.createElement('div');

Ce n'est pas un bon exemple, comme une partie importante de la Méthode de factorisation est le polymorphisme. Si je pouvais étendre document pour définir une autre classe qui définit un autre createElement ce serait le premier de Méthode de Fabrique de matériel.

Résumé De L'Usine

Un résumé de l'usine est destinée à "fournir une interface pour la création de familles de ou des objets dépendants , sans préciser les classes de béton.

Typique de droit-dehors-de-le-livre est un exemple de Widget de l'Usine, de retour dans la journée lorsque le GoF a été publié, la croix-plate-forme de développement du GUI était un peu compliqué, alors vous pouvez définir un résumé widget usine de classe.

Cette classe pourrait avoir des méthodes d' createWindow, createButton, createScrollBar etc. À son tour, plusieurs implémentations serait défini pour produire Swing widgets ou AWT ou quoi que ce soit. Ensuite, en fonction de la configuration, les différentes classe est instanciée.

Addendum - Usine De Béton

Je crois qu'une Usine de Béton est non-résumé de la mise en œuvre de l'Abrégé de l'Usine ou de la méthode de Fabrique.

Donc, quand j'écris mes propres généralisation de l' document qui remplace createElement, la classe est une Usine de production de Béton.

De même, en WidgetFactory serait un Résumé de l'Usine, SwingWidgetFactory serait une usine de béton.

4voto

JonH Points 20454

La meilleure façon d'apprendre est certainement à lire. Jetez un oeil à ceci: http://www.dofactory.com/Patterns/Patterns.aspx.

L'usine de la méthode de reporter la création d'objets à des sous-classes. Cela signifie qu'une classe de base/l'interface est définie toutefois client code n'est pas de créer un objet par rapport à cette interface. Des sous-classes qui implémentent l'interface sont de gauche à initialiser un objet.

Résumé des usines peuvent être trouvés ici: http://www.dofactory.com/Patterns/PatternAbstract.aspx#_self2

Il y a déjà de bonnes informations sur ce site. La meilleure chose à faire est de vérifier sur wiki:

http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29

http://javadesign-patterns.blogspot.com/ est un bon endroit pour apprendre des modèles de conception

4voto

subhashis Points 686

FACTORY PATTERN: renvoie les objets d'une famille ABSTRACT FACTORY: renvoie les objets de plus d'une famille.

Donc, vous pouvez dire que l’usine abstraite contient plus d’une usine

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X