构建器(builder)模式是一种独特的设计模式,它有助于使用简单对象构建复杂对象并使用算法。 这种设计模式属于创建型模式。 在这种设计模式中,构建器类逐步构建最终对象。 该构建器独立于其他对象。
构建器(builder)模式的优点
在本节中,我们将学习如何实现构建器模式。参考以下实现代码 -
class director:
__builder = none
def setbuilder(self, builder):
self.__builder = builder
def getcar(self):
car = car()
# first goes the body
body = self.__builder.getbody()
car.setbody(body)
# then engine
engine = self.__builder.getengine()
car.setengine(engine)
# and four wheels
i = 0
while i < 4:
wheel = self.__builder.getwheel()
car.attachwheel(wheel)
i += 1
return car
# the whole product
class car:
def __init__(self):
self.__wheels = list()
self.__engine = none
self.__body = none
def setbody(self, body):
self.__body = body
def attachwheel(self, wheel):
self.__wheels.append(wheel)
def setengine(self, engine):
self.__engine = engine
def specification(self):
print "body: %s" % self.__body.shape
print "engine horsepower: %d" % self.__engine.horsepower
print "tire size: %d\'" % self.__wheels[0].size
class builder:
def getwheel(self): pass
def getengine(self): pass
def getbody(self): pass
class jeepbuilder(builder):
def getwheel(self):
wheel = wheel()
wheel.size = 22
return wheel
def getengine(self):
engine = engine()
engine.horsepower = 400
return engine
def getbody(self):
body = body()
body.shape = "suv"
return body
# car parts
class wheel:
size = none
class engine:
horsepower = none
class body:
shape = none
def main():
jeepbuilder = jeepbuilder() # initializing the class
director = director()
# build jeep
print "jeep"
director.setbuilder(jeepbuilder)
jeep = director.getcar()
jeep.specification()
print ""
if __name__ == "__main__":
main()
执行上面程序,得到以下输出结果 -