如何设计我的setter方法?

时间:2012-03-13 14:45:10

标签: java methods

我有一个我写的方法:

void updateMyJaxb(final JAXBElement<?> jaxbElement) {

addElementtoJaxb(jaxbElement)
}


void addElementTJaxb(jaxbElement)
{
   //have to cast to myown type 
((JAXBElement<MyType>) jaxbElement).getValue().setSomeValue(somevalue);
}

所以实质上我在JAXBElement中添加了一些人员。 问题是:它是一个好的设计,参考和改变内容,? 将引用返回到更新的对象会更好吗? 否则该方法可能不易理解?

1 个答案:

答案 0 :(得分:0)

Setter不应对他们直接参数产生任何影响。 我个人认为这是糟糕的设计。 如果您希望这样做,我强烈建议您记录此行为,因为行为可能是意外的。

返回对象也不是必需的,因为Java通过引用传递参数(通常是对象)。

我会使用Adapter模式,它将JAXBElement作为参数并返回JAXBElement。 适配器克隆它并更改克隆并返回它,而不是更新JAXBElement。 这样就没有引入意想不到的副作用。 这种模式也称为防御性复制。

private JAXBElement clone(JAXBElement o) {
    JAXBElement clone = new JAXBElement();

    clone.setName(o.getName());
    ...

    return clone;
}

这应该可以胜任。