Pola Desain Python - Pembangun

Builder Pattern adalah pola desain unik yang membantu dalam membangun objek kompleks dengan menggunakan objek sederhana dan menggunakan pendekatan algoritmik. Pola desain ini termasuk dalam kategori pola kreasi. Dalam pola desain ini, kelas pembangun membuat objek akhir dalam prosedur langkah demi langkah. Pembangun ini tidak bergantung pada objek lain.

Keuntungan dari Pola Builder

  • Ini memberikan pemisahan yang jelas dan lapisan unik antara konstruksi dan representasi objek tertentu yang dibuat oleh kelas.

  • Ini memberikan kontrol yang lebih baik atas proses konstruksi dari pola yang dibuat.

  • Ini memberikan skenario yang sempurna untuk mengubah representasi internal objek.

Bagaimana cara menerapkan pola pembangun?

Di bagian ini, kita akan belajar bagaimana mengimplementasikan pola 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()

Keluaran

Program di atas menghasilkan keluaran berikut -