前言
构建者模式属于构建型模式;
构建者模式和工厂模式类似,不同的是增加了1个Directot类来控制对象的构建过程;
另外构造着模式着重于控制对象构造的先后顺序,而抽象工厂模式着重于创建多系列的不同产品对象
一、建造者模式
建造者模式和工厂模式相似都是用来创建1个复杂对象;
主要区别是建造者模式着重一步步构造1个复杂对象,而抽象工厂着重于创建多系列的产品对象;
构造着模式: 着重于控制对象构造的先后顺序
抽象工厂模式:着重于创建多系列的产品对象
1.概念
将1个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。
2.角色
抽象建造者(Builder):具体构造者类的约束接口
具体建造者(ConcreteBuilder):具体构造类也称为表示
指挥者(Director):在指挥者类中进行对象的构造
产品(Product):指挥者根据一定顺序构造出各种产品
3.优点
构造者模式的优点,主要集中体现在Director类。
隐藏了1个产品的内部结构和装配过程。
将构造代码于表示代码分离,在Director类中进行构造对象,而不是具体构造者类。
可以对构造过程进行更精细的控制。
4.代码
from abc import ABC, abstractmethod '''' 构造1个游戏角色 1个游戏角色由于4部分组成,分别为 head、body、arm、leg 该角色的组装顺序必须为 head-->body-->arm-->leg ''' # 相当于工厂模式中的产品:role和build类为组合关系 class Role(object): def __init__(self, head=None, body=None, arm=None, leg=None): self.head = head self.body = body self.arm = arm self.leg = leg def __str__(self): return f"{self.head} {self.body} {self.arm} {self.leg}" # 抽象构造者:相当于工厂模式中的抽象工厂 class RoleBuilder(ABC): @abstractmethod def build_head(self): pass @abstractmethod def build_body(self): pass @abstractmethod def build_arm(self): pass @abstractmethod def build_leg(self): pass # 具体构造者-构造出1个具体的美女角色-相当于工厂模式中的具体工厂类 class SexyGirlBuild(RoleBuilder): def __init__(self): self.role = Role() def build_head(self): self.role.head = "漂亮脸蛋" def build_body(self): self.role.body = "苗条身材" def build_arm(self): self.role.arm = "纤纤玉手" def build_leg(self): self.role.leg = "修长美腿" # 具体构造者-构造出1个具体的怪兽角色-相当于工厂模式中的具体工厂类 class MonsterBuild(RoleBuilder): def __init__(self): self.role = Role() def build_head(self): self.role.head = "毛脸" def build_body(self): self.role.body = "蛇身" def build_arm(self): self.role.arm = "鳄鱼爪" def build_leg(self): self.role.leg = "狗腿" # 指挥者-多出1个导演/指挥者,指挥者的作用是严格控制组装顺序 class RoleDirector(object): # 控制组装顺序 def build_role(self, builder): builder.build_head() builder.build_body() builder.build_arm() builder.build_leg() return builder.role # 高层代码-Client # builder=SexyGirlBuild() builder = MonsterBuild() director = RoleDirector() p = director.build_role(builder) print(p)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南