版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boyun58/article/details/83375015
构建器(Builder)模式是一种独特的设计模式,它有助于使用简单对象构建复杂对象并使用算法,这种设计模式属于创建型模式,在这种设计模式中,构建器类逐步构建最终对象。
该构建器独立于其他对象。
构建器(Builder)模式的优点它提供了清晰的分离和独特的层次,可以在构建和表示由类创建的指定对象之间进行表示。
它可以更好地控制所建模式的实现过程。
它提供了改变对象内部表示的场景。
class Generator(object):
__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
color = self.__builder.getColor()
car.setColor(color)
return car
# The whole product
class Car:
def __init__(self):
self.__wheels = list()
self.__engine = None
self.__body = None
self.__color = None
def setBody(self, body):
self.__body = body
def attachWheel(self, wheel):
self.__wheels.append(wheel)
def setEngine(self, engine):
self.__engine = engine
def setColor(self, color):
self.__color = color
def specification(self):
print("body: %s" % self.__body.shape)
print("engine horsepower: %d" % self.__engine.horsepower)
print("tire size: %d" % self.__wheels[0].size)
print("car color: %s" % self.__color.color)
class Builder:
def getWheel(self):
pass
def getEngine(self):
pass
def getBody(self):
pass
def getColor(self):
pass
class BwmBuilder(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
def getColor(self):
color = Color()
color.color = "黑质金"
return color
# Car parts
class Wheel:
size = None
class Engine:
horsepower = None
class Body:
shape = None
class Color:
color = None
def main():
BWMBuilder = BwmBuilder() # initializing the class
generator = Generator()
# Build Jeep
print("BWM")
generator.setBuilder(BWMBuilder)
BWM = generator.getCar()
BWM.specification()
if __name__ == "__main__":
main()