1
15
不,这不是新的。你实际上在那里做的是创造一种 DSL 通过扩展标准的构建器模式来支持分支,这是确保构建器不会对实际对象产生一组冲突设置的极好方法。
我个人认为这是对构建器模式的一个很好的扩展,您可以用它做各种有趣的事情,例如,在工作中,我们有一些DSL构建器用于我们的数据完整性测试,这些测试允许我们做诸如
|
2
23
传统的构建器模式已经处理了这一点:只需在构造函数中使用强制参数即可。当然,没有什么可以阻止调用者传递空值,但您的方法也不能。 我从你的方法中看到的一个大问题是,你要么有一个强制参数数量的类组合爆炸,要么强迫用户在一个特定的squence中设置参数,这很烦人。 另外,这是一项额外的工作。 |
3
13
|
4
12
为什么不在构建器构造函数中放置“必需”参数?
此模式概述于 Effective Java . |
5
7
我不使用多个类,只使用一个类和多个接口。它强制执行您的语法,而不需要太多的输入。它还允许您将所有相关的代码紧密地联系在一起,这样更容易理解代码在更大的级别上发生了什么。 |
6
5
哎呀,这看起来很臃肿。如果你 有 要拥有所有参数,请在构造函数中传递它们。 |
7
5
我见过/使用过:
然后将它们传递给需要它们的对象。 |
8
2
当您有很多可选参数时,通常使用构建器模式。如果您发现需要许多必需的参数,请首先考虑这些选项:
|
9
1
有关更多信息 何时使用构建器模式及其优点 你应该看看我的帖子,再问一个类似的问题 here |
10
0
问题1:关于模式的名称,我喜欢“步骤生成器”的名称:
问题2/3:关于陷阱和建议,这在大多数情况下都显得过于复杂。
总之,我不会在代码中添加任何复杂的内容,因为您担心“缺少”对构建器方法的调用。在实践中,这很容易被测试用例捕获。也许从一个普通的构建器开始,然后介绍这个方法,如果你一直因为缺少方法调用而被咬。 |