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 对象的构建细节。
相关推荐
最贪吃的虎19 小时前
Java基础之集合(3/8)
java·后端
Kratzdisteln19 小时前
【Python】配置LLM API Key
java·服务器·python
2501_9462447819 小时前
Flutter & OpenHarmony OA系统个人中心组件开发指南
java·javascript·flutter
菩提祖师_19 小时前
地下管线三维CAD与信息管理软件开发
java·深度学习
uup19 小时前
SpringBoot 集成 Redis 缓存实践
java·redis
默默前行的虫虫20 小时前
Python轻松实现某德地图可视化
python
智算菩萨20 小时前
基于Pygame的沉浸式新年特效系统设计与实现
开发语言·python·pygame
独自破碎E20 小时前
Leetcode200岛屿数量
java·开发语言
Dxy123931021620 小时前
国家税务总局中文点选验证码识别
python·深度学习·机器学习·图像识别·验证码识别·中文识别
Cosmoshhhyyy20 小时前
《Effective Java》解读第31条:利用有限制通配符来提升API的灵活性
java·开发语言