2017-01-31 1 views
0

J'ai trouvé cet exemple de patron d'usine abstrait en Python. Je suis en train de comprendre pourquoi il doit y avoir un DogFactory, serait-il pas moins de code il suffit d'appeler la classe Dog, quelqu'un peut-il expliquer à la façon dont ce modèle sera utile dans une application réelleessayant de donner un sens au motif d'usine abstraite en Python

class Dog: 

    def speak(self): 
     return "Woof!" 

    def __str__(self): 
     return "Dog" 


class DogFactory: 

    def get_pet(self): 
     return Dog() 

    def get_food(self): 
     return "Dog Food!" 


class PetStore: 

    def __init__(self, pet_factory=None): 

     self._pet_factory = pet_factory 


    def show_pet(self): 

     pet = self._pet_factory.get_pet() 
     pet_food = self._pet_factory.get_food() 

     print("Our pet is '{}'!".format(pet)) 
     print("Our pet says hello by '{}'".format(pet.speak())) 
     print("Its food is '{}'!".format(pet_food)) 

factory = DogFactory() 

shop = PetStore(factory) 

shop.show_pet() 

Répondre

0

Avec le modèle Abstract Factory, vous produisez des implémentations d'une interface Factory particulière, chacun d'entre eux sait comment créer un type de chien différent(). Les méthodes d'une fabrique abstraite sont implémentées en tant que méthodes d'usine. Le modèle d'usine abstrait et le modèle de méthode d'usine découplent le système client des classes d'implémentation réelles via les types abstraits et les fabriques.

Voir ces liens de référence: -

  1. http://www.dofactory.com/net/abstract-factory-design-pattern#_self2
  2. What is the basic difference between the Factory and Abstract Factory Patterns?