java 实现建造者模式

建造者模式(Builder Pattern)是一种创建型设计模式,用于创建一个复杂对象,将对象的构建过程与其表示分离,以便可以使用相同的构建过程来创建不同的表示。在Java中,可以使用建造者模式来构建具有多个属性的对象。下面是一个简单的Java实现建造者模式的示例:

首先,我们创建一个产品类 Product,该产品具有多个属性需要设置:

java 复制代码
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 对象。建造者模式的关键在于建造者类负责设置产品的各个属性:

java 复制代码
public class ProductBuilder {
    private Product 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 对象:

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

        System.out.println(product);
    }
}

在这个示例中,我们通过 ProductBuilder 类来构建 Product 对象,可以逐步设置产品的各个属性,最后使用 build 方法来获取最终的产品对象。这种方式使得对象构建的过程更加清晰,易于理解和维护,同时允许构建不同属性的产品。

建造者模式在需要构建复杂对象,且对象的构建过程有多个步骤或属性设置时非常有用。它可以使客户端代码更加简洁,同时也能够保持代码的可读性和可维护性。

相关推荐
Python私教12 小时前
Django 6.1 RC1 实测:FETCH_PEERS 两条 SQL 解决 N+1,select_related 还需要吗?
后端·python·django
冰心孤城13 小时前
Excel: xls与xlsx格式转换排坑指南
java·前端·excel
自强的小白13 小时前
maven高级(聚合和私服)以及私服的上传和下载
java·maven
玉鸯13 小时前
Agent 的任务编排:从 System Prompt 到 Hierarchical Multi-Agent
python·llm·agent
Python私教13 小时前
Django 6.0 自带 Tasks 到底能不能替代 Celery?跑完 3 组后台任务后我有答案了
后端·python·django
唐青枫13 小时前
Java ReentrantLock 实战详解:比 synchronized 更灵活的可重入锁
java
我的xiaodoujiao13 小时前
快速学习Python基础知识详细图文教程14--模块
开发语言·python·学习·测试工具
残影飞雪13 小时前
Ollama对话脚本
python
jerryinwuhan13 小时前
数据预处理技术 2026-2027-1 开篇-课程介绍
大数据·python
看昭奚恤哭13 小时前
ontainer App】Container App无法从Container Registries 拉取镜像 - 报错 Forbidden
后端·python·flask