我正在查看代码Java Builder Pattern。除了下面的代码,其他所有东西都很好:
public static void main(String[] args) {
NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8)
.calories(100).sodium(35).carbohydrate(27).build();
}
NutritionFacts
构造函数是私有的,而Builder
内部类是静态的。因此我们可以使用NutritionFacts.Builder
访问此类,但是为什么它使用诸如new NutritionFacts.Builder(240, 8)
之类的新关键字呢? 最佳答案
new NutritionFacts.Builder()
创建一个Builder
类的新实例,而不是NutritionFacts
,因此NutritionFacts的构造函数是无关紧要的(可以是私有,受保护,公共,包级)Builder
是在NutritionFacts
内部定义的静态类,因此您无需NutritionFacts
实例即可创建Builder
类的新实例,并且Builder
可以调用其顶级类的任何构造函数(私有,受保护,公共,套餐级别)
关于java - 为什么构建器模式的构造函数是私有(private)的,但为什么仍使用new关键字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20728847/