Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多参数方法使用什么模式?_Java_Design Patterns - Fatal编程技术网

Java 多参数方法使用什么模式?

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(样本,等分)

“foo”需要更改示例对象,第一个参数或第二个参数都可以提取其示例。例如:

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())
。是的,我同意。他给出的例子非常简单,以至于我认为该方法可能对样本或等分样本做了其他事情。