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 方法来获取最终的产品对象。这种方式使得对象构建的过程更加清晰,易于理解和维护,同时允许构建不同属性的产品。

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

相关推荐
SEO_juper20 分钟前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash
南归北隐21 分钟前
Spring AI Alibaba Graph框架实现MCP数据库查询实战
java·后端·spring ai·mcp·spring ai mcp
曲径海盗26 分钟前
【Python 学习第 37 天】for 循环
python·学习笔记·编程入门
古法老登瞎折腾34 分钟前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp
ai大模型-探索者1 小时前
Function Call与MCP(区别、联系与实战)
java·服务器·网络
心静财富之门1 小时前
Python 数据共享四种方案完整实例(同进程 / JSON / Redis / HTTP)
数据库·python·oracle
略略略咯咯1 小时前
啊啊啊啊啊
java·服务器·数据库
SL_staff1 小时前
运维救火实战:钉钉API变更致薪资计算中断,如何用可视化逻辑引擎5分钟热修复
java·开源·全栈
王仔小奶1 小时前
慢SQL治理与性能调优:DBA如何用Shell/Python提升运维效率?
python·sql·dba
用户0332126663671 小时前
使用 Python 快速在 PowerPoint 中生成表格【教程】
python