Неизменные: мы должны использовать интерфейс или ImmutableValueObject

Вопрос в том, как использовать библиотеку java immutables.

В своей документации они, кажется, используют ImmutableValueObject только для создания экземпляра, а затем в коде они используют 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 и передать изменяемый экземпляр).

Часто я хочу использовать интерфейс, потому что я могу просто использовать другую реализацию в своих тестах. Но в случае неизменяемого объекта (который является просто объектом данных) мне это не нужно: в тесте я просто подготавливаю свой объект таким, каким он должен быть.

Есть ли другие причины, по которым я скучаю?

0 ответов

Другие вопросы по тегам