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 -