试图理解 Python 中的抽象工厂模式

ted*_*123 6 python design-patterns abstract-factory python-2.7

我在 Python 中找到了这个抽象工厂模式的例子。我试图弄清楚为什么需要一个 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()
Run Code Online (Sandbox Code Playgroud)

小智 0

使用抽象工厂模式,您可以生成特定工厂接口的实现,每个工厂接口都知道如何创建不同类型的dog()。抽象工厂的方法被实现为工厂方法。抽象工厂模式和工厂方法模式都通过抽象类型和工厂将客户端系统与实际实现类解耦。

请参阅这些参考链接:-

  1. http://www.dofactory.com/net/abstract-factory-design-pattern#_self2
  2. 工厂模式和抽象工厂模式之间的基本区别是什么?