建造者模式

建造者模式

将一个复杂对象的构造与他的表示分离,使得同样的构建过程可以创建不同的表示

抽象建造者、具体建造者、指挥者、产品

from abc import ABCMeta, abstractmethod

class Computer:
    def __init__(self):
        self.monitor = None
        self.cpu = None
        self.keyboard = None
        self.chassis = None
    def __str__(self):
        return f"{self.cpu},{self.monitor},{self.chassis},{self.keyboard}"

class ComputerBuilder(metaclass=ABCMeta):
    @abstractmethod
    def build_monitor(self):
        pass

    @abstractmethod
    def build_cpu(self):
        pass

    @abstractmethod
    def build_keyboard(self):
        pass

    @abstractmethod
    def build_chassis(self):
        pass

class HuaWeiComputer(ComputerBuilder):
    def __init__(self):
        self.computer = Computer()

    def build_cpu(self):
        self.computer.cpu = "I9"

    def build_monitor(self):
        self.computer.monitor = "京东方"

    def build_chassis(self):
        self.computer.chassis = "华硕"

    def build_keyboard(self):
        self.computer.keyboard = "联想"

class AppleComputer(ComputerBuilder):
    def __init__(self):
        self.computer = Computer()

    def build_cpu(self):
        self.computer.cpu = "M1"

    def build_monitor(self):
        self.computer.monitor = "三星"

    def build_chassis(self):
        self.computer.chassis = "自产"

    def build_keyboard(self):
        self.computer.keyboard = "双飞燕"

class ComputerDirector:
    def build_computer(self, builder):
        builder.build_cpu()
        builder.build_chassis()
        builder.build_monitor()
        builder.build_keyboard()
        return builder.computer

if __name__ == "__main__":
    builder = AppleComputer()
    computer_director = ComputerDirector()
    print(computer_director.build_computer(builder))
    print(computer_director.build_computer(HuaWeiComputer()))
    
# M1,三星,自产,双飞燕
# I9,京东方,华硕,联想
posted @   且任荣枯  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇
· 易语言 —— 开山篇
点击右上角即可分享
微信分享提示