Python 디자인 패턴-빌더
Builder Pattern은 단순한 객체를 사용하여 복잡한 객체를 구축하고 알고리즘 방식을 사용하는 고유 한 디자인 패턴입니다. 이 디자인 패턴은 창조 패턴의 범주에 속합니다. 이 디자인 패턴에서 빌더 클래스는 단계별 절차에서 최종 객체를 빌드합니다. 이 빌더는 다른 개체와 독립적입니다.
빌더 패턴의 장점
클래스에 의해 생성 된 지정된 객체의 구성과 표현 사이에 명확한 분리와 고유 한 레이어를 제공합니다.
생성 된 패턴의 구성 프로세스를 더 잘 제어 할 수 있습니다.
개체의 내부 표현을 변경하는 완벽한 시나리오를 제공합니다.
빌더 패턴을 구현하는 방법은 무엇입니까?
이 섹션에서는 빌더 패턴을 구현하는 방법을 배웁니다.
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()
산출
위의 프로그램은 다음과 같은 출력을 생성합니다-