Builder 设计模式:软件开发者深度解析

发布: (2025年12月23日 GMT+8 23:44)
3 min read
原文: Dev.to

Source: Dev.to

引言

在面向对象编程中,构建复杂对象很容易变得笨拙——尤其是当一个对象需要许多参数,而其中一些可能是可选的或相互依赖时。Builder(建造者)设计模式是一种创建型模式,由四人帮(Gang of Four)推广,并在 Effective Java 中由 Joshua Bloch 进一步完善,它提供了一种清晰、可读且易于维护的方式,逐步构造复杂对象。

该模式将复杂对象的构建过程与其表示分离,使相同的构建过程能够创建不同的表示。

组成部分

  • Builder – 定义构建产品步骤的抽象接口。
  • ConcreteBuilder – 实现 Builder 接口,负责构造并组装产品的各个部件。
  • Director(可选) – 按特定顺序协调构建步骤。
  • Product – 被构建的复杂对象。

在实际使用中——尤其是在 Java、C# 或 TypeScript 等语言里——通常不使用单独的 Director,而是通过流式接口(fluent interface),让 Builder 本身通过方法链引导构建过程。

示例(Java)

public class User {
    private final String firstName;
    private final String lastName;
    private final int age;
    private final String email;
    private final String phoneNumber;

    // Private constructor enforces use of Builder
    private User(Builder builder) {
        this.firstName = builder.firstName;
        this.lastName = builder.lastName;
        this.age = builder.age;
        this.email = builder.email;
        this.phoneNumber = builder.phoneNumber;
    }

    public static class Builder {
        private String firstName;
        private String lastName;
        private int age;
        private String email;
        private String phoneNumber;

        public Builder firstName(String firstName) {
            this.firstName = firstName;
            return this;
        }

        public Builder lastName(String lastName) {
            this.lastName = lastName;
            return this;
        }

        public Builder age(int age) {
            this.age = age;
            return this;
        }

        public Builder email(String email) {
            this.email = email;
            return this;
        }

        public Builder phoneNumber(String phoneNumber) {
            this.phoneNumber = phoneNumber;
            return this;
        }

        public User build() {
            return new User(this);
        }
    }
}

优势

  • 提高可读性和可维护性
  • 支持不可变性
  • 构建时进行校验
  • 优雅地处理可选参数
  • 流畅且富有表现力的 API

劣势

  • 增加代码冗长度
  • 对于简单对象可能显得大材小用
  • 存在一定的运行时开销

结论

Builder 设计模式是管理复杂、不可变对象创建的强大工具,能够以可读且安全的方式实现对象构造。虽然它会引入一些样板代码,但在大型应用中,清晰度、正确性和可维护性带来的收益往往大于其成本。

Back to Blog

相关文章

阅读更多 »

SOLID 再探 — 后模式视角

为什么原则不如背后的力量重要:SOLID 不是一份检查清单,而是对更深层力量的历史压缩。这是系列的第 5 部分。

SOLID 原则 + 设计模式

!Forem 标志https://media2.dev.to/dynamic/image/width=65,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%...

适配器模式:真实案例解析

介绍 您正在将第三方支付网关集成到您的应用程序中。一切看起来都很直接,直到您意识到他们的 SDK 使用了一个 comple…