构建器模式Builder

分步骤创建复杂对象(有众多复杂参数,基本让人看不懂的构造函数)。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。

构造者模式最核心的思想就是将创建复杂对象的过程与复杂对象本身进行拆分。通俗来讲,构造者模式是将复杂对象的创建过程分解成了多个简单步骤,在创建复杂对象的时候,只需要了解复杂对象的基本属性即可,而不需要关心复杂对象的内部构造过程。这样的话,使用方只需要关心这个复杂对象要什么数据,而不再关心内部细节。

  • 每个属性有自己的build方法。
    • 作用1:其他对象不能访问正在创建的产品
    • 作用2:可以实现链式编程(返回自己的ElementBuiler对象
    • 作用3:不需要调用所有的步骤
  • 最后build 的时候返回真正Element的结果,可以实现链式编程

1616815367046-358dca9c-0ae4-44d5-ad1b-076ba6107f14.png

构造者模式的四个核心组件:

  • Product 接口:复杂对象的接口,定义了要创建的目标对象的行为。
  • ProductImpl 类:Product 接口的实现,它真正要创建的复杂对象,其中实现了我们需要的复杂业务逻辑。
  • Builder 接口:定义了构造 Product 对象的每一步行为。
  • BuilderImpl 类:Builder 接口的具体实现,其中具体实现了构造一个 Product 的每一个步骤,例如上图中的 setPart1()、setPart2() 等方法,都是用来构造 ProductImpl 对象的各个部分。在完成整个 Product 对象的构造之后,我们会通过 build() 方法返回这个构造好的 Product 对象。

1622948668151-f0f464db-94b0-45ff-bbf9-da45f008283c.png

使用构造者模式一般有两个目的。

第一个目的是将使用方与复杂对象的内部细节隔离,从而实现解耦的效果。使用方提供的所有信息,都是由 Builder 这个“中间商”接收的,然后由 Builder 消化这些信息并构造出一个完整可用的 Product 对象。

第二个目的是简化复杂对象的构造过程。在很多场景中,复杂对象可能有很多默认属性,这时我们就可以将这些默认属性封装到 Builder 中,这样就可以简化创建复杂对象所需的信息。

通过构建者模式的类图我们还可以看出,每个 BuilderImpl 实现都是能够独立创建出对应的 ProductImpl 对象,那么在程序需要扩展的时候,我们只需要添加新的 BuilderImpl 和 ProductImpl,就能实现功能的扩展,这完全符合“开放-封闭原则”。

posted on 2025-10-14 23:05  chuchengzhi  阅读(6)  评论(0)    收藏  举报

导航

杭州技术博主,专注分享云计算领域实战经验、技术教程与行业洞察, 打造聚焦云计算技术的垂直博客,助力开发者快速掌握云服务核心能力。

褚成志 云计算 技术博客