首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么构建器模式比javaBean更安全?

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

Stack Overflow用户
提问于 2012-11-02 10:38:45
回答 2查看 187关注 0票数 2

作为标题,我正在阅读<Effective Java>,但当我阅读chapter2时,它说

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-02 10:46:40

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

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

请注意,如果不可变对象包含对任何可变对象的引用,则外部对象并不是真正不可变的。您可能会在Guava中找到ImmutableListImmutableMapImmutableSet

票数 2
EN

Stack Overflow用户

发布于 2012-11-02 12:07:15

Builder模式更安全,因为构建器可以在将所有参数传递到构造函数之前对其进行验证。

你可能会发现谷歌的Preconditions在这方面很方便。

更不用说,使用Builder使构造复杂对象变得非常简洁。

我不会说遵循构建器模式的对象比JavaBean或多或少是immutable或可变的。这取决于您如何声明字段以及您公开的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13188544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档