Python设计模式 专题
您的位置:python > Python设计模式专题 > 构建器(Builder)设计模式
构建器(Builder)设计模式
作者:--    发布时间:2019-11-20

构建器(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()

执行上面程序,得到以下输出结果 -


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册