python与设计模式之建造者模式的那些事儿

本文介绍了使用建造者模式(BuilderPattern)创建不同类型的机器人,包括士兵和美女,通过抽象建造者、具体建造者和组装者角色实现产品的生产和定制。皇三通过这个模式制造出了一支机器人大军。
摘要由CSDN通过智能技术生成

内容:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

角色:

抽象建造者:(Builder)

具体建造者:(concrete Builder)

组装者:(Director)

产品:(product)

皇三接到了外出打仗,但是募兵了一年,也才募到10个,武器让工厂去落实了,没有人去打仗怎么行。既然没有人就造机器人(player)去打仗,机器需要什么呢?头,身体,手,脚。

一、建造一个生产模型

#产品模型
class Player:
    def __init__(self,head=None,body=None,hand=None,leg=None):
        self.head=head
        self.body=body
        self.hand=hand
        self.leg=leg
    def __str__(self):
        return f'批量生产{self.head}, {self.body}, {self.hand}, {self.leg}的机器人'

二、定义一个生产工艺

#抽象建造者       
class PlayerBuilder(Player):
    @abstractmethod
    def build_head(self):
        pass
        
    @abstractmethod
    def build_body(self):
        pass
    
    @abstractmethod
    def build_hand(self):
        pass
    
    @abstractmethod
    def build_leg(self):
        pass

三、具体建造的类型

皇三想,要想打胜战,有勇无谋可不行,除了有强壮的士兵机器人,还要有美人计才行,软硬兼施,送个温柔乡给对方。属于就有了具体需要生产的模型,具体要建造的美女类,跟士兵类。

#美女类
class BeautyBuilder(PlayerBuilder):

    def __init__(self):
        self.player = Player()
        
    def build_head(self):
        self.player.head = '性感的头像'
        
    def build_body(self):
         self.player.body = 'S型体型'

    def build_hand(self):
         self.player.hand = '纤细的小手'

    def build_leg(self):
        self.player.leg = '大长脚'

class SoldiersBuilder(PlayerBuilder):

    def __init__(self):
        self.player = Player()
        
    def build_head(self):
        self.player.head = '勇猛的头像'
        
    def build_body(self):
        self.player.body = '强壮的体型'

    def build_hand(self):
        self.player.hand = '粗矿的小手'

    def build_leg(self):
        self.player.leg = '粗壮长脚'

四、工艺秘密,开始组装。保密程度--私密级,产品模式有了,那就要有一个组装方法组装。工艺术的改进都在这里处理。

#组装者
class PlayderDirector():
    def build_player(self,builder):
        print('第一步组装头')
        builder.build_head()
        print('第二步组装头')
        builder.build_body()
        print('第三步组装头')
        builder.build_hand()
        print('第四步组装头')
        builder.build_leg()
        return builder.player

皇大跟说了皇三的机器人工厂,也想要建造一个,但是始终也拿不到皇三的组装方法。

五、开始生产

皇三下令,一口气生产美女,士兵。

director = PlayderDirector()
builder = BeautyBuilder()
b=director.build_player(builder) 

builder1 = SoldiersBuilder()
s=director.build_player(builder1)
print(s)


第一步组装头
第二步组装头
第三步组装头
第四步组装头
批量生产性感的头像, S型体型, 纤细的小手, 大长脚的机器人

第一步组装头
第二步组装头
第三步组装头
第四步组装头
批量生产勇猛的头像, 强壮的体型, 粗矿的小手, 粗壮长脚的机器人

从此皇三日夜生产机器人,不久后就制造出来一只军队出来。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值