结构:
代码:
# @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发短信
运行结果: