说明
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。我们想要创建一个由多个部分构成的对象,而且它的构成需要一步接一步地完成。
只有当各个部分都创建好,这个对象才算是完整的。这正是建造者设计模式(Builder design
pattern)的用武之地。建造者模式将一个复杂对象的构造过程与其表现分离,这样,同一个构造
过程可用于创建多个不同的表现。
一般实现
抽象
class Builder(object):
"""基类"""
def Part1(self):
# 不同类型的产品,该步骤的细节可能不同
raise NotImplementedError()
def Part2(self):
# 不同类型的产品,该步骤的细节可能不同
raise NotImplementedError()
class Builder1(Builder):
"""派生类,生产builder1类型的产品"""
def Part1(self):
print 'builder1 Part1'
def Part2(self):
print 'builder1 Part2'
class Builder2(Builder):
"""派生类,生产builder2类型的产品"""
def Part1(self):
print 'builder2 Part1'
def Part2(self):
print 'builder2 Part2'
class Director(object):
"""指挥者,负责组织产品的构建过程"""
def Build(self, builder):
builder.Part1()
builder.Part2()
def client():
director = Director()
director.Build(Builder1())
director.Build(Builder2())
应用场景
- 某类产品的构建由很多复杂组件组成;
- 这些组件中的某些细节不同,构建出的产品表象会略有不同;
- 通过一个指挥者按照产品的创建步骤来一步步执行产品的创建;
- 当需要创建不同的产品时,只需要派生一个具体的建造者,重写相应的组件构建方法即可。
参考资料:
精通Python设计模式
–例子来源于网络