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