Ayant finalement commencé sérieusement à essayer d'apprendre certains motifs de base (très tard dans la carrière, mais c'est une histoire différente), j'essaie de comprendre les différences entre Factory Pattern et Abstract Factory.
Quelles sont les principales différences entre ces deux modèles?
Je comprends que la méthode Factory crée des objets par héritage et Abstract Factory le fait par la composition d’objets, mais d’un point de vue pratique, j’ai toujours du mal à visualiser exactement comment ils fonctionnent.
design-patterns
factory-method
Phil.Wheeler
la source
la source
new
n'est pas une méthode (dans certains systèmes - certes communs - d'objets).Réponses:
La méthode d'usine est généralement classée dans une instruction switch dans laquelle chaque cas renvoie une classe différente, à l'aide de la même interface racine, de sorte que le code appelant n'a jamais à prendre de décision concernant l'implémentation.
Imaginez une usine de validateur de carte de crédit qui renvoie un validateur différent pour chaque type de carte.
Dans Abstract Factory, vous disposez de plusieurs classes d’usines concrètes (et non de méthodes Factory) dérivées d’une interface unique, qui peuvent renvoyer de nombreux types différents à partir de méthodes différentes.
Pensez à un gestionnaire de jeu d'échecs avec une classe différente pour chaque ensemble de règles de variantes.
Une usine abstraite, à la manière d'une stratégie, est souvent sélectionnée à l'aide d'une méthode d'usine, mais il n'est pas nécessaire de les combiner, c'est donc son propre motif.
la source