...

Python设计模式-02-建造者模式

建造者模式是一种创建型设计模式,它可以将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常包括以下几个角色:

  • 产品(Product):表示被构建的复杂对象,通常包含多个部分或组件。
  • 抽象建造者(Builder):定义了创建产品的抽象接口,包括创建产品的各个部分的方法。
  • 具体建造者(Concrete Builder):实现了抽象建造者接口,负责创建产品的各个部分,并组装成最终的产品。
  • 指挥者(Director):负责调用具体建造者来创建产品的各个部分,并组装成最终的产品。

下面是一个简单的 Python 示例,演示了如何使用建造者模式创建一个包含多个部分的产品:

class Product:
    def __init__(self):
        self.part_a = None
        self.part_b = None
        self.part_c = None

class Builder:
    def build_part_a(self):
        pass

    def build_part_b(self):
        pass

    def build_part_c(self):
        pass

    def get_product(self):
        pass

class ConcreteBuilder(Builder):
    def __init__(self):
        self.product = Product()

    def build_part_a(self):
        self.product.part_a = 'Part A'

    def build_part_b(self):
        self.product.part_b = 'Part B'

    def build_part_c(self):
        self.product.part_c = 'Part C'

    def get_product(self):
        return self.product

class Director:
    def __init__(self, builder):
        self.builder = builder

    def construct(self):
        self.builder.build_part_a()
        self.builder.build_part_b()
        self.builder.build_part_c()

builder = ConcreteBuilder()
director = Director(builder)
director.construct()
product = builder.get_product()

print(product.part_a)  # 输出 'Part A'
print(product.part_b)  # 输出 'Part B'
print(product.part_c)  # 输出 'Part C'

在上面的示例中,我们定义了一个 Product 类,它表示被构建的复杂对象,包含了多个部分。然后,我们定义了一个抽象建造者 Builder,它定义了创建产品的抽象接口,包括创建产品的各个部分的方法和获取产品的方法。接下来,我们定义了一个具体建造者 ConcreteBuilder,它实现了抽象建造者接口,负责创建产品的各个部分,并组装成最终的产品。最后,我们定义了一个指挥者 Director,它负责调用具体建造者来创建产品的各个部分,并组装成最终的产品。

在使用建造者模式时,我们首先创建一个具体建造者对象,然后将它传递给指挥者对象。指挥者对象调用具体建造者对象的方法来创建产品的各个部分,并最终获取到完整的产品对象。需要注意的是,具体建造者对象可以根据需要进行替换,从而创建不同的产品。

作者:韩志超

出处:https://www.cnblogs.com/superhin/p/17486235.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

如有问题,请微信联系 superz-han,并发送原文链接。

posted @   韩志超  阅读(270)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题