java建造者模式 (Builder Pattern)示例代码

建造者模式是一种创建型设计模式,它允许我们按照步骤或顺序构建复杂对象。**这种模式特别适用于构建包含许多参数的对象。**建造者模式通过一个建造者对象负责构建目标对象,客户端代码可以根据需要灵活地指定要构建的对象的属性。

产品类

首先,我们定义了产品类 Product,它包含了一些属性:

复制代码
public class Product {
    private String part1;
    private String part2;
    private String part3;

    public void setPart1(String part1) {
        this.part1 = part1;
    }

    public void setPart2(String part2) {
        this.part2 = part2;
    }

    public void setPart3(String part3) {
        this.part3 = part3;
    }

    @Override
    public String toString() {
        return "Product{" +
                "part1='" + part1 + '\'' +
                ", part2='" + part2 + '\'' +
                ", part3='" + part3 + '\'' +
                '}';
    }
}

建造者类

然后,我们定义了建造者类 ProductBuilder,它负责构建 Product 对象:

复制代码
public class ProductBuilder {
    private Product product;

    public ProductBuilder() {
        this.product = new Product();
    }

    public ProductBuilder withPart1(String part1) {
        product.setPart1(part1);
        return this;
    }

    public ProductBuilder withPart2(String part2) {
        product.setPart2(part2);
        return this;
    }

    public ProductBuilder withPart3(String part3) {
        product.setPart3(part3);
        return this;
    }

    public Product build() {
        return product;
    }
}

客户端代码

最后,我们可以在客户端代码中使用建造者模式来构建 Product 对象:

复制代码
public class Client {
    public static void main(String[] args) {
        Product product = new ProductBuilder()
                .withPart1("Part 1")
                .withPart2("Part 2")
                .withPart3("Part 3")
                .build();

        System.out.println(product);
    }
}

示例说明

  • Product 类是要构建的对象,它具有一些属性,例如 part1part2part3
  • ProductBuilder 类负责构建 Product 对象。它提供了一系列的 withXxx() 方法,用于设置 Product 的属性,并且返回 ProductBuilder 实例以支持方法的链式调用。最后,通过 build() 方法返回构建完成的 Product 对象。
  • 使用建造者模式,客户端代码可以根据需要选择设置哪些属性,而不需要关心 Product 对象的构建细节。
相关推荐
信奥卷王24 分钟前
[GESP202503 五级] 原根判断
java·数据结构·算法
木子杳衫27 分钟前
【软件开发】管理类系统
python·web开发
小咕聊编程32 分钟前
【含文档+源码】基于SpringBoot的过滤协同算法之网上服装商城设计与实现
java·spring boot·后端
Zz_waiting.32 分钟前
Spring 原理
java·spring·spring自动管理
程序员小远4 小时前
银行测试:第三方支付平台业务流,功能/性能/安全测试方法
自动化测试·软件测试·python·功能测试·测试工具·性能测试·安全性测试
瓯雅爱分享5 小时前
Java+Vue构建的采购招投标一体化管理系统,集成招标计划、投标审核、在线竞价、中标公示及合同跟踪功能,附完整源码,助力企业实现采购全流程自动化与规范化
java·mysql·vue·软件工程·源代码管理
猫头虎6 小时前
如何查看局域网内IP冲突问题?如何查看局域网IP环绕问题?arp -a命令如何使用?
网络·python·网络协议·tcp/ip·开源·pandas·pip
沿着路走到底6 小时前
python 基础
开发语言·python
mit6.8247 小时前
[C# starter-kit] 命令/查询职责分离CQRS | MediatR |
java·数据库·c#
诸神缄默不语7 小时前
Maven用户设置文件(settings.xml)配置指南
xml·java·maven