gpt4 book ai didi

design-patterns - builder 模式替代品

转载 作者:行者123 更新时间:2023-12-01 23:25:39 24 4
gpt4 key购买 nike

我在这里阅读了构建器模式的好处:http://drdobbs.com/java/208403883?pgno=2

我想知道以下内容的可行性,这似乎更简单。

public class NutritionFactParams {
private int servingSize;
private int servings;
private int fat_ = 0;
private int sodium_ = 0;
NutritionFactParams(int servingSize, int servings) {
this.servingSize = servingSize;
this.servings = servings;
}
NutritionFactParams fat(int fat) {
this.fat_ = fat;
return this;
}
NutritionFactParams sodium(int sodium) {
this.sodium_ = sodium;
return this;
}
}

public class NutritionFacts {
public NutritionFacts(NutritionFactParams params) {
// copy values across, or store NutritionFactParams as member
}
}

public class Main {
public static void main(String args[]) {
NutritionFacts n = new NutritionFacts(new NutritionFactParams(1,2).fat(23).soduim(10));
}
}

这基本上是构建器模式,除了 NutritionFacts 构造器是公共(public)的而不是私有(private)的,我们在 NutritionFacts 内部没有静态 Builder 类,并且构建器上没有 build() 方法。没有替代或默认构造函数,因此您无法在不先构造 NutritionFactsParams 的情况下构建 NutritionFacts。

最佳答案

区别不大,但我能想到一个重要的区别:

如果您使用 builder,客户端代码不需要知道您在 build() 上实际返回的 Impl,这意味着您可以根据配置 (builder) 灵活地返回不同的 Impl。另一方面,使用构造函数,客户端必须显式创建 Impl。

关于design-patterns - builder 模式替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6204941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com