猿问

为什么不直接使用构造函数?

我需要创建一个 ScanOptions 的实例。正确的代码如下。


String pattern = "mykeyprefix_*";

Long cnt = 2000L;

ScanOptions options = ScanOptions.scanOptions().match(pattern).count(cnt).build();

我的问题是为什么不直接使用构造函数来创建对象?


scanOptions = new ScanOptions(parttern, cnt);

还是使用对象工厂创建实例?


options = ScanOptionsFactory.create(parttern, cnt);

那么将代码设计为第一种情况有什么好处吗?你能详细解释一下吗?非常感谢!这是弹簧源代码:


org.springframework.data.redis.core.ScanOptions


智慧大石
浏览 178回答 2
2回答

莫回无

可选选项,保存变化想象一些更多(可选)选项。然后需要几个构造函数,或者一个具有多个创建方法的工厂。使用的构建器模式允许具有可变字段,下一个选项仍可能以某种方式改变。在创建时,生成的类只有不可变的最终字段。许多参数的清晰度另外请注意,对于许多选项,构建器模式会为每个选项命名;相比:.withX(y).withY(x)和(y, x)(就像工厂一样。)隐藏确切的实现子类 [不是这里的情况]另一种用法是由构建器返回派生类,实际上隐藏了一个实现类。

慕容3067478

好处是期权的数量在未来可能会增加。他们可能会考虑到这一点,因此他们从一开始就使用构建器模式,因为从工厂或构造器进行更改可能非常困难。Joshua Bloch 在 Effective Java 的第二章(第 2 项)中很好地引用了这个问题。
随时随地看视频慕课网APP

相关分类

Java
我要回答