Le modèle de générateur est un modèle de conception unique qui permet de créer des objets complexes avec des objets simples et utilise une approche algorithmique. Ce modèle de conception entre dans la catégorie du modèle de création. Dans ce modèle de conception, une classe de générateur crée de manière incrémentielle l’objet final. Ce générateur est indépendant des autres objets.

Avantages du modèle de constructeur

  • Il fournit une séparation et un niveau clairs entre la construction et la représentation d’un objet créé par la classe.

  • Cela donne un meilleur contrôle sur le processus de conception du motif créé.

  • Il offre le scénario parfait pour changer la représentation interne des objets.

Comment implémenter un modèle de générateur?

Cette section vous montre comment implémenter le modèle de générateur.

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()

production

Le programme ci-dessus produit la sortie suivante –

Modèle de constructeur



Source link

Recent Posts