设计模式解析:建造者模式


基于springboot的学生成绩管理系统的设计与实现
有论文,PPT
链接:基于springboot的学生成绩管理系统的设计与实现,有论文,PPT


一、含义

建造者模式是一种创建型设计模式,它可以帮助我们创建复杂的对象。该模式将对象的构建过程与其表示分离,使我们能够灵活地创建不同类型的对象,同时又不必了解其内部细节。

在建造者模式中,我们使用一个抽象的建造者接口来定义创建对象所需的步骤,然后每个具体的建造者都可以实现接口中的方法,并按照特定的顺序为对象构建部件,最终创建出一个完整的对象。此外,我们还需要一个指导者类,它负责协调每个建造者的工作,以确保对象被正确地构建。

这种模式适用于需要创建多个复杂对象的场合,其中每个对象都不同,但其构建过程具有相似的步骤。通过使用建造者模式,我们可以将对象构建过程的细节从客户端代码中分离出来,从而提高代码的可维护性和可扩展性。

二、示例

这是一个典型的建造者模式的代码实现,将创建一个具有多种属性的电脑对象。

# 创建电脑类
class Computer:
    def __init__(self):
        self.cpu = None
        self.memory = None
        self.hard_disk = None
        self.gpu = None
        self.sound_card = None

    def __str__(self):
        return f"CPU: {self.cpu}\nMemory: {self.memory}\nHard Disk: {self.hard_disk}\nGPU: {self.gpu}\nSound Card: {self.sound_card}\n"

# 建造者接口
class ComputerBuilder:
    def __init__(self):
        self.computer = Computer()

    def set_cpu(self, cpu):
        self.computer.cpu = cpu

    def set_memory(self, memory):
        self.computer.memory = memory

    def set_hard_disk(self, hard_disk):
        self.computer.hard_disk = hard_disk

    def set_gpu(self, gpu):
        self.computer.gpu = gpu

    def set_sound_card(self, sound_card):
        self.computer.sound_card = sound_card

    def get_computer(self):
        return self.computer

# 具体建造者类
class GamingComputerBuilder(ComputerBuilder):
    def __init__(self):
        super().__init__()

    def set_cpu(self):
        self.computer.cpu = "Intel i7"

    def set_memory(self):
        self.computer.memory = "16GB"

    def set_hard_disk(self):
        self.computer.hard_disk = "1TB SSD"

    def set_gpu(self):
        self.computer.gpu = "NVIDIA RTX 3090"

    def set_sound_card(self):
        self.computer.sound_card = "Creative Sound Blaster"

# 指导者类
class Director:
    def __init__(self, builder):
        self.builder = builder

    def build_computer(self):
        self.builder.set_cpu()
        self.builder.set_memory()
        self.builder.set_hard_disk()
        self.builder.set_gpu()
        self.builder.set_sound_card()

        return self.builder.get_computer()

# 客户代码
builder = GamingComputerBuilder()
director = Director(builder)
computer = director.build_computer()
print(computer)

在上面的例子中,Computer类代表我们要创建的对象,而ComputerBuilder是一个基本接口,其中定义了设置电脑属性的方法。接下来,我们定义了一个具体的建造者类GamingComputerBuilder,它实现了ComputerBuilder接口中的方法。最后,我们使用Director类来指导GamingComputerBuilder对象来构建电脑。

我们调用Director类的build_computer()方法来构建电脑对象。在这个方法内,我们通过调用具体的建造者类的方法来设置电脑的属性。最后我们返回Computer对象并将其打印出来。

以上就是一个典型的建造者模式的实现。

三、用法

建造者模式的主要用途是创建具有多个属性的复杂对象。如果对象具有复杂的构建过程,则建议使用此模式。

以下是建造者模式的一些用途:

  1. 创建复杂对象:当您需要创建具有多个属性(例如产品)的复杂对象时,建造者模式是一种非常有用的工具。

  2. 允许对象逐步构建:建造者模式允许您在构建对象时逐步添加属性,使用一个接口实现。这使得代码更加灵活,以便根据需要添加、删除或更改属性。

  3. 分离构建与实现:建造者模式通过分离对象的构建和实现过程来简化代码。这样,客户端代码只需调用构造函数即可创建对象,而无需了解其构建细节。

  4. 提高代码复用性:建造者模式使得建造过程和表示分离,可以重复使用不同的建造器创建不同的输入。同样的部件可以用于不同的构建器,而无需编写重复的代码。

因此,建造者模式非常有用,并且可以提高代码的可维护性和可重用性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值