创建型模式-工厂方法模式

# 创建型模式-工厂方法模式
# 相对于简单工厂模式,如果添加了新的动物类,对用的工厂方法需要一并修改违反了开闭原则,
# 因此工厂方法模式, 新增了抽象工厂类,将具体工厂进行隔离满足开闭原则

from abc import ABCMeta, abstractmethod


class IAnimal(metaclass=ABCMeta):

    @abstractmethod
    def say(self):
        pass


class Dog(IAnimal):

    def say(self):
        print("汪汪")


class Cat(IAnimal):

    def say(self):
        print("喵喵")


class IFactory(metaclass=ABCMeta):
    animal: IAnimal = None

    @abstractmethod
    def get_animal(self):
        pass


class DogFactory(IFactory):

    def get_animal(self):
        return Dog()


class CatFactory(IFactory):
    def get_animal(self):
        return Cat()


if __name__ == "__main__":
    cat_factory = CatFactory()
    animal = cat_factory.get_animal()
    animal.say()

  

 

posted @ 2023-06-28 14:07  你看起来真的很好吃  阅读(0)  评论(0编辑  收藏  举报