分享

【Python设计模式】建造者模式

 江海博览 2024-04-11 发布于浙江
from abc import ABCMeta, abstractmethod # ---------------------------------------- # Product # ---------------------------------------- class Player: ''' Product ''' def __init__(self, face=None, body=None, arm=None, leg=None): self.face = face self.body = body self.arm = arm self.leg = leg def __str__(self): return (f'{self.face}, ' f'{self.body}, ' f'{self.arm}, ' f'{self.leg}.') # ---------------------------------------- # Builder # ---------------------------------------- class PlayerBuilder(metaclass=ABCMeta): @abstractmethod def build_face(self): pass @abstractmethod def build_body(self): pass @abstractmethod def build_arm(self): pass @abstractmethod def build_leg(self): pass # ---------------------------------------- # Concrete Builder # ---------------------------------------- class SexyGirlBuilder(PlayerBuilder): def __init__(self): self.player = Player() def build_face(self): self.player.face = '漂亮脸蛋' def build_body(self): self.player.body = '苗条' def build_arm(self): self.player.arm = '漂亮胳膊' def build_leg(self): self.player.leg = '大长腿' class MonsterBuilder(PlayerBuilder): def __init__(self): self.player = Player() def build_face(self): print('怪物脸') def build_body(self): print('怪物身体') def build_arm(self): print('怪物胳膊') def build_leg(self): print('怪物腿') # ---------------------------------------- # Director # ---------------------------------------- class PlayerDirector: @staticmethod def build_player(_builder): _builder.build_body() _builder.build_face() _builder.build_arm() _builder.build_leg() return _builder.player # ---------------------------------------- # client # ---------------------------------------- builder = SexyGirlBuilder() director = PlayerDirector() player = director.build_player(builder) print(player)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多