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 --- ...6\344\275\277\347\224\250builder\346\250\241\345\274\217.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/docs/notes/02. \345\275\223\346\236\204\351\200\240\346\226\271\346\263\225\345\217\202\346\225\260\350\277\207\345\244\232\346\227\266\344\275\277\347\224\250builder\346\250\241\345\274\217.md" "b/docs/notes/02. \345\275\223\346\236\204\351\200\240\346\226\271\346\263\225\345\217\202\346\225\260\350\277\207\345\244\232\346\227\266\344\275\277\347\224\250builder\346\250\241\345\274\217.md" index 36d2104..d243357 100644 --- "a/docs/notes/02. \345\275\223\346\236\204\351\200\240\346\226\271\346\263\225\345\217\202\346\225\260\350\277\207\345\244\232\346\227\266\344\275\277\347\224\250builder\346\250\241\345\274\217.md" +++ "b/docs/notes/02. \345\275\223\346\236\204\351\200\240\346\226\271\346\263\225\345\217\202\346\225\260\350\277\207\345\244\232\346\227\266\344\275\277\347\224\250builder\346\250\241\345\274\217.md" @@ -92,7 +92,7 @@ cocaCola.setSodium(35); cocaCola.setCarbohydrate(27); ``` -  不幸的是,JavaBeans 模式本身有严重的缺陷。**由于构造方法被分割成了多次调用,所以在构造过程中 JavaBean 可能处于不一致的状态。**该类仅通过检查构造函数参数的有效性,而没有强制的一致性措施。在不一致的状态下尝试使用对象可能会导致一些错误,这些错误与平常代码的BUG很是不同,因此很难调试。一个相关的缺点是,**JavaBeans 模式排除了让类不可变的可能性**(详见第 17 条),并且需要程序员增加工作以确保线程安全。 +  不幸的是,JavaBeans 模式本身有严重的缺陷。**由于构造方法被分割成了多次调用,所以在构造过程中 JavaBean 可能处于不一致的状态。** 该类仅通过检查构造函数参数的有效性,而没有强制的一致性措施。在不一致的状态下尝试使用对象可能会导致一些错误,这些错误与平常代码的BUG很是不同,因此很难调试。一个相关的缺点是,**JavaBeans 模式排除了让类不可变的可能性**(详见第 17 条),并且需要程序员增加工作以确保线程安全。   通过在对象构建完成时手动「冻结」对象,并且不允许它在解冻之前使用,可以减少这些缺点,但是这种变体在实践中很难使用并且很少使用。 而且,在运行时会导致错误,因为编译器无法确保程序员会在使用对象之前调用 `freeze` 方法。 -- GitLab