From 9768ded5070b04c615e358ebfa1c642b68b579d6 Mon Sep 17 00:00:00 2001 From: Joe <736777445@qq.com> Date: Sat, 4 Apr 2020 20:54:19 +0800 Subject: [PATCH] =?UTF-8?q?Update=2002.=20=E5=BD=93=E6=9E=84=E9=80=A0?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=8F=82=E6=95=B0=E8=BF=87=E5=A4=9A=E6=97=B6?= =?UTF-8?q?=E4=BD=BF=E7=94=A8builder=E6=A8=A1=E5=BC=8F.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/notes/02. 当构造方法参数过多时使用builder模式.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notes/02. 当构造方法参数过多时使用builder模式.md b/docs/notes/02. 当构造方法参数过多时使用builder模式.md index 36d2104..d243357 100644 --- a/docs/notes/02. 当构造方法参数过多时使用builder模式.md +++ b/docs/notes/02. 当构造方法参数过多时使用builder模式.md @@ -92,7 +92,7 @@ cocaCola.setSodium(35); cocaCola.setCarbohydrate(27); ``` -  不幸的是,JavaBeans 模式本身有严重的缺陷。**由于构造方法被分割成了多次调用,所以在构造过程中 JavaBean 可能处于不一致的状态。**该类仅通过检查构造函数参数的有效性,而没有强制的一致性措施。在不一致的状态下尝试使用对象可能会导致一些错误,这些错误与平常代码的BUG很是不同,因此很难调试。一个相关的缺点是,**JavaBeans 模式排除了让类不可变的可能性**(详见第 17 条),并且需要程序员增加工作以确保线程安全。 +  不幸的是,JavaBeans 模式本身有严重的缺陷。**由于构造方法被分割成了多次调用,所以在构造过程中 JavaBean 可能处于不一致的状态。** 该类仅通过检查构造函数参数的有效性,而没有强制的一致性措施。在不一致的状态下尝试使用对象可能会导致一些错误,这些错误与平常代码的BUG很是不同,因此很难调试。一个相关的缺点是,**JavaBeans 模式排除了让类不可变的可能性**(详见第 17 条),并且需要程序员增加工作以确保线程安全。   通过在对象构建完成时手动「冻结」对象,并且不允许它在解冻之前使用,可以减少这些缺点,但是这种变体在实践中很难使用并且很少使用。 而且,在运行时会导致错误,因为编译器无法确保程序员会在使用对象之前调用 `freeze` 方法。