...

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,它负责调用具体建造者来创建产品的各个部分,并组装成最终的产品。

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

posted @ 2023-06-16 18:05  韩志超  阅读(241)  评论(0编辑  收藏  举报