2017-01-31 15 views
0

Я нашел этот пример абстрактного шаблона фабрики в Python. Я пытаюсь понять, почему должен быть DogFactory, не будет ли это меньшим кодом, просто назовите класс Dog, может кто-нибудь объяснить, как этот шаблон будет полезен в реальном мире.пытается понять абстрактный шаблон фабрики в 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() 

ответ

0

С шаблоном Abstract Factory вы создаете реализации конкретного интерфейса Factory, каждый из которых знает, как создавать разные виды собак(). Методы абстрактной фабрики реализованы как заводские методы. Как шаблон Factory Factory, так и шаблон Factory Method отделяют клиентскую систему от фактических классов реализации через абстрактные типы и фабрики.

Смотрите эти справочные ссылки: -

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