gpt4 book ai didi

java - 为什么我不能直接创建一个对象并直接设置其字段,而不是使用 Builder 模式,如下所示?

转载 作者:行者123 更新时间:2023-12-02 02:12:50 25 4
gpt4 key购买 nike

为什么我不能这么做

Animal object = new Animal();
object.setType("cat");
object.setName("Meow");

而不是

Animal.Builder objectBuilder = new Animal.Builder();
Animal object = objectBuilder.setType("cat").setName("Meow").build();

Animal object = new Animal.Builder().setType("cat").setName("Meow").build();

所有三种方法最终都会创建一个类型为 cat 且名称为 Meow 的 Animal 对象,不是吗?后一种方法是否优于第一种方法?如果我使用第一种方法,我不必创建单独的 Builder 类,我可以只使用 getter 和 setter。

最佳答案

构建器模式可以节省您编写代码的时间!

请注意,如果您使用 setter 来设置属性,则需要多次编写 object 一词?使用构建器模式,您不需要每次都编写object。如果您的变量名称很长,这尤其有用。

更重要的是,构建器模式可以帮助您创建不可变的对象。 Immutable objects are generally considered a good thing.您会看到,Builder 对象实际上并不是不可变的,但是一旦调用 build(),返回值就可以是不可变的。如果您不使用构建器模式并想要创建不可变的东西,则必须将所有属性值放入构造函数中:

new MyObject("some string", 10, true, 0.5)

而且您不知道每个参数的用途。

关于java - 为什么我不能直接创建一个对象并直接设置其字段,而不是使用 Builder 模式,如下所示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com