为什么构建器模式比javaBean更安全?

为什么构建器模式比javaBean更安全?,java,Java,作为标题,我正在阅读,但当我阅读第2章时,它说当对象是不可变的时,你比当对象(如JavaBeans)是可变的时更不用担心。一旦你有了一个不可变的对象,它基本上就不受线程同步问题的影响,你可以自由地传递它,而不需要制作防御副本(以保护用户或用意良好的库方法不改变数据) 当然,创建一个可变对象可能会很棘手,而且可能会涉及太长时间的构造函数而无法管理。这就是生成器模式可以帮助您的地方——使用可变生成器创建初始状态,然后将其复制到该对象构造函数中的不可变对象 请注意,如果不可变对象包含对任何可变对象的引

作为标题,我正在阅读
,但当我阅读第2章时,它说

当对象是不可变的时,你比当对象(如JavaBeans)是可变的时更不用担心。一旦你有了一个不可变的对象,它基本上就不受线程同步问题的影响,你可以自由地传递它,而不需要制作防御副本(以保护用户或用意良好的库方法不改变数据)

当然,创建一个可变对象可能会很棘手,而且可能会涉及太长时间的构造函数而无法管理。这就是生成器模式可以帮助您的地方——使用可变生成器创建初始状态,然后将其复制到该对象构造函数中的不可变对象


请注意,如果不可变对象包含对任何可变对象的引用,则外部对象并不是真正不可变的。您可能会发现
ImmutableList
ImmutableMap
ImmutableSet
非常方便。

构建器模式更安全,因为构建器可以在将所有参数传递到构造函数之前验证这些参数

您可能会在Google handy上找到这方面的
先决条件

更不用说,使用生成器可以使构造复杂对象变得非常简洁


我不会说遵循builder模式的对象与
JavaBean
相比或多或少是不可变的。这取决于声明字段的方式以及公开的方法

你的问题被打断了吗?看起来它是在完成之前提交的。