什么模式用于多参数方法?

时间:2010-05-14 00:32:33

标签: java design-patterns

我有一个带有以下签名的方法:foo(Sample sample,Aliquot aliquot)

“foo”需要改变Sample对象,可以是第一个参数,也可以是第二个参数,它可以提取Sample。例如:

foo (Sample sample, Aliquot aliquot) {
    Sample out = null;
    if (sample != null)
       out = sample
    else
       out = aliquot.getSample()

    return out;
}

但是这非常优雅,除了阅读API之外,开发人员不知道第一个参数的引用会覆盖第二个参数的Sample。

现在,我可以将“foo”更改为foo(SomeMagicalObject栏),其中SomeMagicalObject是Sample和Aliquot的元组并保存一些逻辑......等等。

但我想知道,这个问题是否有一些模式?

3 个答案:

答案 0 :(得分:2)

我要么将其更改为foo(Sample sample),并使调用者在Sample对象中传递,或者将其更改为foo(Aliquot aliquot),并使调用者在Aliquot上设置Sample。

你是对的,如果你允许两种方式,那么调用者就需要哪一种方式会很困惑。删除未知并强制调用者以这样或那样的方式进行操作。

答案 1 :(得分:0)

sample.foo( aliquot );

答案 2 :(得分:0)

取决于更大的图片是什么,但是如果你不控制Sample对象,你总是可以在没有方法的情况下这样做:

样本foo =(样本!= null)? sample:aliquot.getSample();