Python设计模式-建造者模式

建造者模式:将一复杂的构建过程和它的表现分离出来,使同样的建造过程可以获取不同的表现。能够更加精确的控制复杂对象的创建过程,让使用者可以使用相同的创建过程创建不同的产品。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值