我需要创建一个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)



(就像工厂一样。)隐藏确切的实现子类[这里不是这种情况]


另一种用法是由构建器返回派生类,实际上隐藏了实现类。

10-07 18:47