开发者

Python 设计模式中的创建型建造者模式

开发者 https://www.devze.com 2022-12-10 14:13 出处:网络 作者: 范桂飓
目录一、建造者模式二、代码示例一、建造者模式 建造者模式,顾名思义类似于建筑工人,他们按照有条理的施工顺序(e.g. 打桩 => 浇筑框架 => 砌墙 => 装修)来进行建筑的修建。对于千差万别的建筑,都可以复
目录
  • 一、建造者模式
  • 二、代码示例

一、建造者模式

建造者模式,顾名思义类似于建筑工人,他们按照有条理的施工顺序(e.g. 打桩 => 浇筑框架 => 砌墙 => 装修)来进行建筑的修建。对于千差万别的建筑,都可以复用同样的施工流程。因为不同的材料、不同设计,可以有不同的表现。

建造者模式,与抽象工厂模式同样用于实例化复杂的对象,主要区别在于:

  • 抽象工厂模式侧重于实例化多个系列的复杂对象。
  • 建造者编程客栈模式侧重于一步步有序地构造一个复杂对象。

二、代码示例

按照有序的步骤来组装(建造)一个复杂对象。

Python 设计模式中的创建型建造者模式

实体角色:

  • 抽象建造者(Builder
  • 具体建造者(Concrete Builder
  • 指挥者(Director
  • 产品(Product
import abc

class Robot:
 
  def __init__(self, head=None, body=None, arms=None, legs=None):
    self.head = head
   http://www.cppcns.com self.body = body
    self.arms = arms
    self.legs = legs
   
  def __str__(self):
    return f"我是一个机器人:{self.head, self.body, self.arms, self.legs}"
 

# 抽象建造者
class RobotBuilder(metaclass=abc.ABCMeta):
 
  @abc.abstractmethod
  def build_head(self):
    print("第二步:安装头")
    pass
 
  @abc.abstractmethod
  def build_body(self):
    print("第一步:安装身体")
    pass
 
  @abc.abstractmethod
  def buildwww.cppcns.com_arms(self):
    print("第三步:安装手臂")
    pass
 
  @abc.abstractmethod
  def build_legs(self):
    print("第四步:安装脚")
    pass
 

# 具体建造者 Doraemon
class Doraemohttp://www.cppcns.comn(RobotBuilder):
 
  def __init__(self):
    self.robot = Robot()
   
  def build_head(self):
    super().build_head()
    self.robot.head = "蓝色的狸猫头"
   
  def build_body(self):
    super().build_body()
    self.robot.body = "带有百宝袋的身体"
   
  def build_arms(self):
   编程客栈 super().build_arms()
    self.robot.arms = "圆手"
   
  def build_legs(self):
    super().build_legs()
    self.robot.legs = "短腿"
   
   
# 具体建造者 Gundam
class Gundam(RobotBuilder):
 
  def __init__(self):
    self.robot = Robot()
   
  def build_head(self):
    super().build_head()
    self.robot.head = "白色的机械头"
 
  def build_body(self):
    super().build_body()
    self.robot.body = "钢铁般的身体"
   
  def build_arms(self):
    super().build_arms()
    self.robot.arms = "带有巨炮的机械手"
   
  def build_legs(self):
    super().build_legs()
    self.robot.legs = "带有推进器的机械腿"
   
   
# 指挥者,确定建造顺序
class BuildDirector:
 
  def build(self, builder):
    builder.build_body()
    builder.build_head()
    builder.build_arms()
    builder.build_legs()
    return builder.robot
 

if __name__ == "__main__":
  director = BuildDirector()
 
  doraemon = Doraemon()
  print(director.build(doraemon))
 
  gundam = Gundam()
  print(director.build(gundam))

到此这篇关于python 设计模式中的创建型建造者模式的文章就介绍到这了,更多相关Python建造者模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号