未验证 提交 9768ded5 编写于 作者: J Joe 提交者: GitHub

Update 02. 当构造方法参数过多时使用builder模式.md

上级 bcfa5411
......@@ -92,7 +92,7 @@ cocaCola.setSodium(35);
cocaCola.setCarbohydrate(27);
```
  不幸的是,JavaBeans 模式本身有严重的缺陷。**由于构造方法被分割成了多次调用,所以在构造过程中 JavaBean 可能处于不一致的状态。**该类仅通过检查构造函数参数的有效性,而没有强制的一致性措施。在不一致的状态下尝试使用对象可能会导致一些错误,这些错误与平常代码的BUG很是不同,因此很难调试。一个相关的缺点是,**JavaBeans 模式排除了让类不可变的可能性**(详见第 17 条),并且需要程序员增加工作以确保线程安全。
  不幸的是,JavaBeans 模式本身有严重的缺陷。**由于构造方法被分割成了多次调用,所以在构造过程中 JavaBean 可能处于不一致的状态。** 该类仅通过检查构造函数参数的有效性,而没有强制的一致性措施。在不一致的状态下尝试使用对象可能会导致一些错误,这些错误与平常代码的BUG很是不同,因此很难调试。一个相关的缺点是,**JavaBeans 模式排除了让类不可变的可能性**(详见第 17 条),并且需要程序员增加工作以确保线程安全。
  通过在对象构建完成时手动「冻结」对象,并且不允许它在解冻之前使用,可以减少这些缺点,但是这种变体在实践中很难使用并且很少使用。 而且,在运行时会导致错误,因为编译器无法确保程序员会在使用对象之前调用 `freeze` 方法。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册