Я использую шаблон Builder для нескольких классов моего проекта (несколько аргументов, некоторые обязательные, некоторые необязательные и т. Д.). Эти классы неизменяемы (нет сеттеров, глубокая копия для получателей коллекций).
Сейчас я пытаюсь сохранить эти объекты в базе данных, используя среду сохранения, которая конструирует объекты с помощью конструктора по умолчанию + установщиков. Очень не любит моих Строителей!
Я не хочу превращать эту настройку в объекты POJO и терять преимущества текущего дизайна (гибкость, неизменяемость, безопасность конструкции).
Я приветствовал бы любые отзывы об обходных путях, которые можно использовать в этой ситуации (я мог бы обернуть каждый из этих классов, но это удвоило бы количество классов, и я бы предпочел этого избежать).
Одно сообщение фактически указывает на это как на особый недостаток шаблона Builder.
РЕДАКТИРОВАТЬ
Один ответ предлагает использовать частные конструкторы / сеттеры, но это работает только в том случае, если поля класса не являются окончательными, что не в моем случае.
ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ
Всем спасибо.
Я думаю, что мое окончательное решение выглядит следующим образом и отлично работает (для записи, я использую MongoDB + Morphia):
class AClass {
private final String aField;
private final AClass() {
aField = "";
}
//Standard builder pattern after that - no setters (private or public)
}