建造者模式
建造者模式
将一个复杂对象的构造与他的表示分离,使得同样的构建过程可以创建不同的表示
抽象建造者、具体建造者、指挥者、产品
from abc import ABCMeta, abstractmethod
class Computer:
def __init__(self):
self.monitor = None
self.cpu = None
self.keyboard = None
self.chassis = None
def __str__(self):
return f"{self.cpu},{self.monitor},{self.chassis},{self.keyboard}"
class ComputerBuilder(metaclass=ABCMeta):
@abstractmethod
def build_monitor(self):
pass
@abstractmethod
def build_cpu(self):
pass
@abstractmethod
def build_keyboard(self):
pass
@abstractmethod
def build_chassis(self):
pass
class HuaWeiComputer(ComputerBuilder):
def __init__(self):
self.computer = Computer()
def build_cpu(self):
self.computer.cpu = "I9"
def build_monitor(self):
self.computer.monitor = "京东方"
def build_chassis(self):
self.computer.chassis = "华硕"
def build_keyboard(self):
self.computer.keyboard = "联想"
class AppleComputer(ComputerBuilder):
def __init__(self):
self.computer = Computer()
def build_cpu(self):
self.computer.cpu = "M1"
def build_monitor(self):
self.computer.monitor = "三星"
def build_chassis(self):
self.computer.chassis = "自产"
def build_keyboard(self):
self.computer.keyboard = "双飞燕"
class ComputerDirector:
def build_computer(self, builder):
builder.build_cpu()
builder.build_chassis()
builder.build_monitor()
builder.build_keyboard()
return builder.computer
if __name__ == "__main__":
builder = AppleComputer()
computer_director = ComputerDirector()
print(computer_director.build_computer(builder))
print(computer_director.build_computer(HuaWeiComputer()))
# M1,三星,自产,双飞燕
# I9,京东方,华硕,联想
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇
· 易语言 —— 开山篇