Комбинация Lombok @Data и @Builder - PullRequest
0 голосов
/ 07 мая 2020

Привет, у меня вопрос о комбинации @Data и @Builder. Представьте себе ситуацию: у меня есть Entity, которую нужно создать и изменить. Сначала я создаю его:

Entity entity = Pojo.builder()
.a("1")
.b("2")
.build();

После некоторых операций мне нужно добавить поле c и изменить a. Как мне это сделать? Это нормально:

entity.setA("01");
entity.setC("3");
repo.save(entity);

Есть ли лучшие варианты?

Ответы [ 2 ]

6 голосов
/ 07 мая 2020

Это нормально. Buider -> создание объекта, Set -> установка объекта после создания.

Назначение шаблона проектирования Builder - отделить построение сложного объекта от его представления. Это один из шаблонов проектирования «Банды четырех».

1 голос
/ 07 мая 2020

Вы можете использовать сеттер, всегда используя @Accessors(chain = true) в сущности для создания объекта и установки поля. Опция цепочки дает нам сеттеры, которые возвращают это.

Entity entity= new Entity().setName("Name").setBalance(10);
entity.setName("newName");

Обратите внимание, что chain по умолчанию имеет значение true, но я установил его явно для ясности.

А для средств доступа без префикса get или set используйте @Accessors(fluent = true)

Entity entity= new Entity().name("Name").balance(10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...