建造者设计模式

17 Mar 2025 | 4 分钟阅读

建造者设计模式是一种创建型设计模式,它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 我们可以轻松地创建一个复杂对象。借助新创建的构建代码,我们可以生成各种类型的表示。

我们可以使用建造者设计模式在面向对象的编程中解决许多与对象创建相关的问题。

为什么要使用建造者设计模式?

建造者方法用于定义一个公共类,该类负责构建所需的对象。

如果没有这项技术,我们必须创建多个对象才能满足主类对象的需求。此模式的组件如下。

  • Builder(建造者)- 它负责定义构建一个产品不同部分的约定。
  • ConcreteBuilder(具体建造者)- 它负责实现建造者约定。
  • Product(产品)- 这是一个由各种子部分组成的复杂产品。
  • ProductServer(产品服务者)- 它向需要的人提供产品的服务。

问题

假设我们要加入任何著名培训中心的课程。 我们去那里询问费用结构,安置情况,可用时间以及座位可用性。 学院行政人员将检查他们的系统,并告诉您您所询问的内容。

因此,这是设计灵活,结构良好且有利可图的系统的主要目的。 经验不足的开发人员会为培训中心中可用的每门课程创建一个单独且独特的类。 然后,开发人员将为每个类创建一个单独的实例,尽管每次都不需要这样做。 当大学或培训中心决定添加新课程时,就会出现主要问题。然后,开发人员必须添加新类,因为他们的代码不是很灵活。

让我们通过 Python 脚本了解上述逻辑。

示例 -

输出

Name of Course: Java and its fee_structure: >
Name of Course: Swift and its fee_structure: >
Name of Course: DSA and its fee_structure: >

解决方案

我们的主要重点是从培训机构获得有关任何课程的正确信息。 它可以是PythonSwiftJava。 如果我们找到特定的课程,例如查找有关课程的详细信息,费用结构,时间安排,批次可用性和批次。 这将花费大量时间。 在这里,我们将使用建造者模式来克服此问题。 我们可以使用建造者设计模式解决以下类型的问题。

  • 一个类如何创建复杂对象的不同表示形式。
  • 一个类如何简化创建的复杂对象。

输出

fee_structure : 18000 | batch_availibility: 5

建造者方法的优点

以下是建造者方法的优点。

  • 我们可以更改对象的内部表示。
  • 它提供了对其他表示使用相同构造代码的便利。
  • 我们可以将业务逻辑和复杂的构造代码彼此分离。
  • 可以逐步创建对象,并以递归方式运行。

建造者方法的缺点

我们定义了建造者的缺点,如下所示。

  • 它增加了代码的复杂性,因为建造者模式需要多个新类。
  • 开发人员应确保建造者类是可变的。
  • 它不提供数据成员要初始化的保证。

设计模式的适用性

建造者模式可以适用于以下情况。

建造者方法使我们可以逐步创建复杂的对象。 但是,如果我们递归地调用这些步骤,则非常方便。 它不允许客户端代码获取不完整的数据,因为它防止暴露未完成的对象。

如果创建产品的各种表示形式,并且涉及类似的步骤,但细节有所不同,则建造者方法适用。


下一个主题原型设计模式