抽象工厂模式demo

发布时间 2023-05-25 11:15:16作者: 无情の王子

结构:

代码:

# @Time    : 2023/5/25
# @Author  : zhc
# @File    : 抽象工厂模式.py


class Xiaomi5:
    def __init__(self):
        self.phone_name = "小米5"

    def send_msg(self):
        print(f'用{self.phone_name}发短信')


class Xiaomi6:
    def __init__(self):
        self.phone_name = "小米6"

    def send_msg(self):
        print(f'用{self.phone_name}发短信')


class XiaomiFactory:
    @staticmethod
    def get_phone(phone_type):
        if phone_type == "5":
            return Xiaomi5()
        elif phone_type == '6':
            return Xiaomi6()


class Apple5:
    def __init__(self):
        self.phone_name = "苹果5"

    def send_msg(self):
        print(f"用{self.phone_name}发短信")


class Apple6:
    def __init__(self):
        self.phone_name = "苹果6"

    def send_msg(self):
        print(f"用{self.phone_name}发短信")

class AppleFactory:
    @staticmethod
    def get_phone(phone_type):
        if phone_type == "5":
            return Apple5()
        elif phone_type == "6":
            return Apple6()


class FactoryProducer:
    @staticmethod
    def get_factory(factory_name):
        if factory_name == "xiaomi":
            return XiaomiFactory()
        elif factory_name == "Apple":
            return AppleFactory()

if __name__ == '__main__':
    factory = FactoryProducer.get_factory("xiaomi")
    xiaomi5 = factory.get_phone('5')
    xiaomi5.send_msg()  # 用小米5发短信

    factory = FactoryProducer.get_factory("Apple")
    xiaomi5 = factory.get_phone('5')
    xiaomi5.send_msg()  # 用苹果5发短信

运行结果: