This commit is contained in:
sjsdfg 2019-06-22 23:36:36 +08:00
parent 5a2fcb9983
commit ddf1ec699d

View File

@ -1,7 +1,7 @@
# 2. 当构造方法参数过多时使用 builder 模式
  静态工厂和构造方法都有一个限制:它们不能很好地扩展到很多可选参数的情景。请考虑一个代表包装食品上的营养成分标签的例子。这些标签有几个必需的属性——每次建议的摄入量,每罐的份量和每份卡路里 ,以及超过 20 个可选的属性——总脂肪、饱和脂肪、反式脂肪、胆固醇、钠等等。大多数产品都有非零值,只有少数几个可选属性
  静态工厂和构造方法都有一个限制:它们不能很好地扩展到很多可选参数的情景。请考虑一个代表包装食品上的营养成分标签的例子。这些标签有几个必需的属性——每次建议的摄入量,每罐的份量和每份卡路里 ,以及超过 20 个可选的属性——总脂肪、饱和脂肪、反式脂肪、胆固醇、钠等等。大多数产品只有这些可选字段中的少数,且具有非零值
  应该为这样的类编写什么样的构造方法或静态工厂传统上程序员使用了可伸缩telescoping constructor构造方法模式在这种模式中只提供了一个只所需参数的构造函数另一个只有一个可选参数第三个有两个可选参数等等最终在构造函数中包含所有可选参数。这就是它在实践中的样子。为了简便起见只显示了四个可选属性