From 4b59b63729fb70832c54b5b323057d7a712bfab6 Mon Sep 17 00:00:00 2001 From: sjsdfg <736777445@qq.com> Date: Fri, 5 Apr 2019 16:53:28 +0800 Subject: [PATCH] =?UTF-8?q?update:=202.=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=A8=20builder=20=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/notes/02. 当构造方法参数过多时使用builder模式.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/notes/02. 当构造方法参数过多时使用builder模式.md b/docs/notes/02. 当构造方法参数过多时使用builder模式.md index 1fdb00d..6b3a585 100644 --- a/docs/notes/02. 当构造方法参数过多时使用builder模式.md +++ b/docs/notes/02. 当构造方法参数过多时使用builder模式.md @@ -174,7 +174,7 @@ NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8)   为了简洁起见,省略了有效性检查。 要尽快检测无效参数,检查 builder 的构造方法和方法中的参数有效性。 在 `build` 方法调用的构造方法中检查包含多个参数的不变性。为了确保这些不变性不受攻击,在从 builder 复制参数后对对象属性进行检查(条目 50)。 如果检查失败,则抛出 `IllegalArgumentException` 异常(条目 72),其详细消息指示哪些参数无效(条目 75)。 -  Builder 模式非常适合类层次结构。 使用平行层次的 builder,每个嵌套在相应的类中。 抽象类有抽象的 builder; 具体的类有具体的 builder。 例如,考虑代表各种比萨饼的根层次结构的抽象类: +  Builder 模式非常适合类层次结构。 使用平行层次的 builder,每个嵌套在相应的类中。 抽象类有抽象的 builder;具体的类有具体的 builder。 例如,考虑代表各种比萨饼的根层次结构的抽象类: ```java // Builder pattern for class hierarchies @@ -267,9 +267,9 @@ public class Calzone extends Pizza { } ``` -  请注意,每个子类 builder 中的 `build` 方法被声明为返回正确的子类:`NyPizza.Builder` 的 `build` 方法返回 `NyPizza`,而 `Calzone.Builder` 中的 `build` 方法返回 `Calzone`。 这种技术,其一个子类的方法被声明为返回在超类中声明的返回类型的子类型,称为协变返回类型 ( covariant return typing)。 它允许客户端使用这些 builder,而不需要强制转换。 +  请注意,每个子类 builder 中的 `build` 方法被声明为返回正确的子类:`NyPizza.Builder` 的 `build` 方法返回 `NyPizza`,而 `Calzone.Builder` 中的 `build` 方法返回 `Calzone`。 这种技术,其一个子类的方法被声明为返回在超类中声明的返回类型的子类型,称为协变返回类型(covariant return typing)。 它允许客户端使用这些 builder,而不需要强制转换。 -  这些「分层 builder」的客户端代码基本上与简单的 `NutritionFacts` builder 的代码相同。为了简洁起见,下面显示的示例客户端代码假设枚举常量的静态导入: +  这些「分层 builder(hierarchical builders)」的客户端代码基本上与简单的 `NutritionFacts` builder 的代码相同。为了简洁起见,下面显示的示例客户端代码假设枚举常量的静态导入: ```java NyPizza pizza = new NyPizza.Builder(SMALL)