from abc import ABC, abstractmethod


class Fruit(ABC):
    def __init__(self, name):
        self.name = name

    @abstractmethod
    def make_juice(self):
        pass


class Apple(Fruit):
    def make_juice(self):
        print(f"制作{self.name}汁")


class Grape(Fruit):
    def make_juice(self):
        print(f"制作{self.name}酒")


class AbcFruitFactory(ABC):
    @abstractmethod
    def create_fruit(self):
        pass


class AppleFactory(AbcFruitFactory):
    def create_fruit(self):
        return Apple('苹果')


class OrangeFactory(AbcFruitFactory):
    def create_fruit(self):
        return Grape('葡萄')


fruit1 = AppleFactory().create_fruit()
fruit1.make_juice()     # 制作苹果汁


fruit2 = OrangeFactory().create_fruit()
fruit2.make_juice()