我需要创建一个ScanOptions实例。正确的代码如下。
String pattern = "mykeyprefix_*";
Long cnt = 2000L;
ScanOptions options = ScanOptions.scanOptions().match(pattern).count(cnt).build();
我的问题是为什么不只使用构造函数直接创建对象?
scanOptions = new ScanOptions(parttern, cnt);
还是使用对象Factory创建实例?
options = ScanOptionsFactory.create(parttern, cnt);
那么,设计代码作为第一种情况有什么好处吗?您能为我详细解释一下吗?非常感谢你!这是spring的源代码:
org.springframework.data.redis.core.ScanOptions
最佳答案
可选选项,保存变化
想象更多的(可选)选项。这样一来,将需要多个构造函数,或者一个具有多个create方法的工厂。
使用的构建器模式允许具有可变字段,因此下一个选项可能仍会以某种方式更改。在创建时,产生的类只有不可变的final
领域。
明确许多参数
还请注意,对于许多选项,构建器模式会为每个选项命名;相比:
.withX(y).withY(x)
与
(y, x)
(就像工厂一样。)隐藏确切的实现子类[这里不是这种情况]
另一种用法是由构建器返回派生类,实际上隐藏了实现类。