Java 多参数方法使用什么模式?
我有一个签名如下的方法:foo(样本,等分) “foo”需要更改示例对象,第一个参数或第二个参数都可以提取其示例。例如:Java 多参数方法使用什么模式?,java,design-patterns,Java,Design Patterns,我有一个签名如下的方法:foo(样本,等分) “foo”需要更改示例对象,第一个参数或第二个参数都可以提取其示例。例如: foo (Sample sample, Aliquot aliquot) { Sample out = null; if (sample != null) out = sample else out = aliquot.getSample() return out; } 但这太不优雅了,除了阅读API,开发人员不
foo (Sample sample, Aliquot aliquot) {
Sample out = null;
if (sample != null)
out = sample
else
out = aliquot.getSample()
return out;
}
但这太不优雅了,除了阅读API,开发人员不知道第一个参数的引用会覆盖第二个参数的示例
现在,我可以将“foo”改为foo(SomeMagicalObject栏),其中SomeMagicalObject是Sample和Aliquot的元组,并包含一些逻辑。。。等等
但我想知道,这个问题有什么模式吗 我要么将其更改为
foo(Sample Sample)
,并让调用者传入一个Sample对象,要么将其更改为foo(等分)
,并让调用者在等分上设置Sample
sample.foo( aliquot );
你是对的,如果你两种方式都允许的话,那么打电话的人就会混淆需要哪一种。删除未知对象并强制调用方以这种或那种方式进行操作。取决于整体情况,但如果您不控制示例对象,则始终可以不使用任何方法执行此操作:
示例foo=(示例!=null)?示例:等分.getSample() 如果该方法操作一个
样本
,那么传入一个小份
就没有什么意义了。建议foo(示例)
将是更好的方法。如果需要,调用方可以始终使用foo(等分.getSample())
。是的,我同意。他给出的例子非常简单,以至于我认为该方法可能对样本或等分样本做了其他事情。