3

问题是关于使用不可变Java 库。

在他们的文档中,他们似乎使用ImmutableValueObjectonly 来构造实例,然后在他们使用ValueObject(接口或抽象基类)的代码中,如下所示:

ValueObject valueObject =
    ImmutableValueObject.builder()
        .name("My value")
        .addCounts(1)
        .addCounts(2)
        .build();

总是只使用 不是更好ImmutableValueObject吗?

例如:

ImmutableValueObject valueObject =
    ImmutableValueObject.builder()
        .name("My value")
        .addCounts(1)
        .addCounts(2)
        .build();

特别是对于方法参数等,ValueObject不保证不变性(例如,有人可以只是子类化ValueObject并传递一个可变实例)。

通常,我想使用接口,因为我可以在测试中简单地使用不同的实现。但是对于不可变对象(它只是一个数据对象),我不需要这个:在测试中我只是按照它应该的方式准备我的对象。

还有其他原因,我失踪了吗?

4

0 回答 0