开发手册 欢迎您!
软件开发者资料库

Python设计模式 - 构建器

Python设计模式构建器 - 从简单和简单的步骤学习Python设计模式从基本到高级概念,包括简介,Python的Gist,模型视图控制器,单例,工厂,构建器,原型,外观,命令,适配器,装饰器,代理,责任链,观察员,状态,战略,模板,飞重,抽象工厂,面向对象的模式,面向对象的概念实施,迭代器模式,词典,列表数据结构,集,队列,字符串和序列化,Python中的并发,反模式, 异常处理。

Builder Pattern是一种独特的设计模式,有助于使用简单对象构建复杂对象并使用算法方法.这种设计模式属于创作模式的范畴.在此设计模式中,构建器类按步骤构建最终对象.此构建器独立于其他对象.

构建器模式的优点

  • 它在构造和表示由类创建的指定对象之间提供清晰的分离和唯一层.

  • 它可以更好地控制所创建模式的构造过程./p>

  • 它提供了改变对象内部表示的完美场景.

如何实现构建器模式?

在本节中,我们将学习如何实现构建器模式.

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 productclass 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].sizeclass Builder:      def getWheel(self): pass      def getEngine(self): pass      def getBody(self): passclass 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 partsclass Wheel:   size = Noneclass Engine:   horsepower = Noneclass Body:   shape = Nonedef 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()

输出

上述程序生成以下输出 :

Builder Pattern