优化抽象工厂模式示例,添加品牌方法并重构工厂实现,更新构建脚本以支持更清晰的输出
This commit is contained in:
@@ -64,6 +64,8 @@ class MiLaptop(Laptop):
|
||||
|
||||
# 抽象工厂
|
||||
class AbstractFactory(ABC):
|
||||
name: str
|
||||
|
||||
@abstractmethod
|
||||
def createPhone(self) -> Phone:
|
||||
pass
|
||||
@@ -75,6 +77,9 @@ class AbstractFactory(ABC):
|
||||
|
||||
# 具体工厂 - 苹果工厂
|
||||
class AppleFactory(AbstractFactory):
|
||||
def __init__(self):
|
||||
self.name = "苹果工厂"
|
||||
|
||||
def createPhone(self):
|
||||
return Iphone()
|
||||
|
||||
@@ -84,6 +89,9 @@ class AppleFactory(AbstractFactory):
|
||||
|
||||
# 具体工厂 - 小米工厂
|
||||
class XiaomiFactory(AbstractFactory):
|
||||
def __init__(self):
|
||||
self.name = "小米工厂"
|
||||
|
||||
def createPhone(self):
|
||||
return MiPhone()
|
||||
|
||||
@@ -91,30 +99,30 @@ class XiaomiFactory(AbstractFactory):
|
||||
return MiLaptop()
|
||||
|
||||
|
||||
def client(factory: AbstractFactory):
|
||||
phone = factory.createPhone()
|
||||
laptop = factory.createLaptop()
|
||||
print(f" 生产了一台{phone.brand}手机")
|
||||
phone.setOS()
|
||||
print(f" 生产了一台{laptop.brand}笔记本电脑")
|
||||
laptop.setOS()
|
||||
|
||||
|
||||
def main():
|
||||
print("======== 抽象工厂模式 ========")
|
||||
|
||||
# 伟哥先去苹果工厂生产产品
|
||||
print("伟哥选择了苹果工厂生产产品:")
|
||||
appleFactory = AppleFactory()
|
||||
applePhone = appleFactory.createPhone()
|
||||
appleLaptop = appleFactory.createLaptop()
|
||||
print(f" 生产了一台{applePhone.brand}手机")
|
||||
applePhone.setOS()
|
||||
print(f" 生产了一台{appleLaptop.brand}笔记本电脑")
|
||||
appleLaptop.setOS()
|
||||
factory = AppleFactory()
|
||||
print(f"伟哥选择了{factory.name}生产产品:")
|
||||
client(factory)
|
||||
|
||||
print("\n切换工厂生产其他品牌的产品...\n")
|
||||
|
||||
# 然后伟哥去小米工厂生产产品
|
||||
print("伟哥选择了小米工厂生产产品:")
|
||||
xiaomiFactory = XiaomiFactory()
|
||||
xiaomiPhone = xiaomiFactory.createPhone()
|
||||
xiaomiLaptop = xiaomiFactory.createLaptop()
|
||||
print(f" 生产了一台{xiaomiPhone.brand}手机")
|
||||
xiaomiPhone.setOS()
|
||||
print(f" 生产了一台{xiaomiLaptop.brand}笔记本电脑")
|
||||
xiaomiLaptop.setOS()
|
||||
factory = XiaomiFactory()
|
||||
print(f"伟哥选择了{factory.name}生产产品:")
|
||||
client(factory)
|
||||
|
||||
print("====== 抽象工厂模式结束 ======")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user