2017-01-31 3 views
0

파이썬에서 추상 팩토리 패턴의 예제를 발견했습니다. DogFactory가 필요한 이유를 이해하려고 노력하고 있습니다. Dog 클래스를 호출하는 코드가 더 적지 않습니까?이 패턴이 실제 응용 프로그램에서 유용 할 수있는 방법에 대해 설명 할 수 있습니까?파이썬에서 추상 팩토리 패턴을 이해하려고 시도했습니다.

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 인터페이스의 구현을 생성합니다. 각각의 다른 인터페이스는 서로 다른 종류의 dog()을 만드는 방법을 알고 있습니다. Abstract Factory의 메소드는 Factory Methods로 구현됩니다. 추상 팩토리 패턴과 팩토리 메소드 패턴은 추상적 인 유형과 팩토리를 통해 클라이언트 시스템을 실제 구현 클래스와 분리합니다.

다음 참조 링크를 참조하십시오 : -

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