建造者模式:将一复杂的构建过程和它的表现分离出来,使同样的建造过程可以获取不同的表现。能够更加精确的控制复杂对象的创建过程,让使用者可以使用相同的创建过程创建不同的产品。
from abc import ABCMeta,abstractmethod
class Toy(metaclass=ABCMeta):
def __init__(self,name):
self._name = name
self.__components=[]
def getName(self):
return self.__name
def addComonent(self,component,count=1,unit="个"):
self.__components.append([component,count,unit])
print("%s增加了%d%s%s"%(self._name,count,unit,component))
@abstractmethod
def show(self):
pass
class CarToy(Toy):
def __init__(self,name):
super().__init__(name)
def show(self):
print("我是%s"%(self._name))
class HouseToy(Toy):
def __init__(self,name):
super().__init__(name)
def show(self):
print("我是%s" % (self._name))
class ToyBuilder:
def buildIngCar(self):
car = CarToy("大卡车")
car.addComonent("轮子",4)
car.addComonent("车身", 1)
return car
def builderHouse(self):
house = HouseToy("l楼房")
house.addComonent("客厅",1)
house.addComonent("卧室", 3)
return house
def test():
builder = ToyBuilder()
car = builder.buildIngCar()
car.show();
house = builder.builderHouse()
house.show()
test()
运行结果:
大卡车增加了4个轮子
大卡车增加了1个车身
我是大卡车
l楼房增加了1个客厅
l楼房增加了3个卧室
我是l楼房
aaa