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

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

相关推荐
深蓝海拓14 分钟前
PySide6从0开始学习的笔记(十三) IDE的选择
笔记·python·qt·学习·pyqt
Li_76953216 分钟前
Redis —— (五)
java·redis·后端·spring
派大鑫wink29 分钟前
【Day7】构造方法与 this 关键字:初始化对象的正确姿势
java·开发语言
智算菩萨29 分钟前
实战:用 Python + 传统NLP 自动总结长文章
开发语言·人工智能·python
子夜江寒29 分钟前
基于 Python 库使用贝叶斯算法与逻辑森林
开发语言·python·算法
JIngJaneIL30 分钟前
基于java+ vue办公管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
BBB努力学习程序设计34 分钟前
掌握Python中不可变对象与可变对象的深度解析
python·pycharm
whitelbwwww34 分钟前
Pytorch--张量表示实际数据
人工智能·pytorch·python
写文章的大米37 分钟前
10分钟用Python搭个接口,还能自动生成文档?
python·fastapi
超级大只老咪37 分钟前
速通:类,对象,方法(Java)
java